因為專案中銷售人員對於學生要採取跟進操作,現在想要知道所有學生的最後一次跟進記錄以及時間,
解決方案有很多。先把錶結構貼出來。更多交流歡迎,join(「q_qun」,1071834648)
學生表
跟進表
1.先查出學生表中所有學生,然後遍歷去查詢(php中foreach中查詢),簡單,但是效率很低。
2. 先排序然後在呼叫子查詢在已經排序好的裡面取,麻煩,效率也不高。
3.使用group_concat配合substring_index
介紹下這兩個函式
group_concat
很多人都知道他是分組合併,但是可能對於他第二個排序引數應用不太多。列出詳細的使用
group_concat( [distinct] 要連線的字段 [order by 排序字段 asc/desc ] [separator 『分隔符』] )
這裡就是先根據時間排序,把所有時間從大到小拼接起來,用指定分割符隔開,預設為逗號隔開,如果你要合併的字串中你確定了不會有特殊字元,你就可以指定某個特殊字元隔開。
substring_index
按關鍵字擷取字串,用法如下:
substring_index(被擷取字段,關鍵字,關鍵字出現的次數),可能對於第三個引數不太清楚,這裡詳細說一下用count代表第三個引數:
返回乙個 str 的子字串,在 delimiter 出現 count 次的位置擷取。
如果 count > 0,從則左邊數起,且返回位置前的子串;
如果 count < 0,從則右邊數起,且返回位置後的子串
舉例: 如果字串為 aaaaa,bbbbbb,cccccc 如果count=1,那麼返回的值為aaaaa,相當於分割後的第乙個元素,如果為2,就是aaaaa,bbbbbb。同理就可以參照php中的substr中-1索引就可以理解count<0的情況了。
實現思路
先分組拼接,把大的放在第乙個,然後用指定字串分割,取第乙個,特別注意分割的字串一定是保證不會出現在需要分組拼接的字串中,否則會導致資料不準確。
最終效果
查詢這個跟進的詳情
附上mysql**:
select
s.id,student_name,
@a:=substring_index(group_concat(f.create_time order
by f.create_time desc),
",",1)
as follow_content,
substring_index(group_concat(f.remark order
by f.create_time desc),
",",
1) follow_content
from
rms_student_sell s,
rms_student_sell_follow f
where
f.student_sell_id = s.id
and f.student_sell_id=
5348
group
byf.student_sell_id
hibernate 一對多關聯
雖然老師說不提倡使用一對多的對映,一般情況下推薦使用多對一設定實現,他們的效果是一樣的,但是我們還是簡單的講了一點實現方法,以後估計很少用吧,記到這吧,說不定不用很快就想不起來了 現在定義了兩個bean,乙個是hospital,另外乙個叫做doctor.在hospital中的屬性為 private ...
mysql 一對多關聯查詢 練習
場景 假設乙個學生有多門課程,一門課程有多個學生 雖然兩者是多對多關係,但本次假設為一對多 學生表 insert into student values 1 張三 66 3 insert into student values 2 李四 77 3 insert into student values...
Android ormlite 一對多關聯對映筆記
上次看到有人說道android query框架 查了一下資料 真是好用阿。然後又看到推薦了解ormlite 今天又去看了下ormlite 第乙個當然是實驗關聯映 然後發現它的一對多實現好像跟hibernate的使用不太一樣 記錄下來。等下再看看多對多怎麼實現的。先建立public class cus...