mysql中⼀对多关联,获取多表中最新⼀条数据背景
因为项⽬中销售⼈员对于学⽣要采取跟进操作,现在想要知道所有学⽣的最后⼀次跟进记录以及时间,
解决⽅案有很多。先把表结构贴出来。更多交流欢迎,join(“q_qun”,1071834648)
学⽣表
跟进表
1.先查出学⽣表中所有学⽣,然后遍历去查询(php中foreach中查询),简单,但是效率很低。
splatter前端框架模板网站
2. 先排序然后在调⽤⼦查询在已经排序好的⾥⾯取,⿇烦,效率也不⾼。
3.使⽤GROUP_CONCAT配合SUBSTRING_INDEX
介绍下这两个函数
1. GROUP_CONCAT
很多⼈都知道他是分组合并,但是可能对于他第⼆个排序参数应⽤不太多。列出详细的使⽤
group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator ‘分隔符’] )
这⾥就是先根据时间排序,把所有时间从⼤到⼩拼接起来,⽤指定分割符隔开,默认为逗号隔开,如果你要合并的字符串中你确定了不会有特殊字符,你就可以指定某个特殊字符隔开。
2. SUBSTRING_INDEX
python3教程 雪峰笔记按关键字截取字符串,⽤法如下:
substring_index(被截取字段,关键字,关键字出现的次数),可能对于第三个参数不太清楚,这⾥详细说⼀下⽤count代表第三个参数:
返回⼀个 str 的⼦字符串,在 delimiter 出现 count 次的位置截取。
如果 count > 0,从则左边数起,且返回位置前的⼦串;
如果 count < 0,从则右边数起,且返回位置后的⼦串
举例: 如果字符串为 aaaaa,bbbbbb,cccccc 如果count=1,那么返回的值为aaaaa,相当于分割后的第⼀个元素,如果为2,就是aaaaa,bbbbbb。同理就可以参照php中的substr中-1索引就可以理解count<0的情况了。
3. 实现思路
先分组拼接,把⼤的放在第⼀个,然后⽤指定字符串分割,取第⼀个,特别注意分割的字符串⼀定是保证不会出现在需要分组拼接的字符串中,否则会导致数据不准确。
查询这个跟进的详情
group by 多个条件附上mysql代码:
SELECT
mysql语句多表查询s.id,student_name,
@a:=SUBSTRING_INDEX(GROUP_ate_time ORDER ate_time DESC),",",1)as follow_content, SUBSTRING_INDEX(GROUP_ark ORDER ate_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 BY
f.student_sell_id
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论