Mysql 一是多对多的关系,得到最新的一排
我想得到的结果是Mysql 一是多对多的关系,得到最新的一排,mysql,sql,join,group-by,Mysql,Sql,Join,Group By,我想得到的结果是 lead_sp_id sp_id phone 1 5 111 2 5 222 3 5 333 4 3 444 5 3 555 6 3 666 7 3 777 8 5
lead_sp_id sp_id phone
1 5 111
2 5 222
3 5 333
4 3 444
5 3 555
6 3 666
7 3 777
8 5 888
act_id lead_sp_id sp_id act_time
1 1 5 2012-12-31 14:20:49
2 1 5 2012-12-30 14:20:49
3 2 5 2012-12-29 14:20:49
4 2 5 2012-12-31 14:20:49
5 2 5 2012-12-28 14:20:49
6 4 3 2012-12-31 14:20:49
7 4 3 2012-12-28 14:20:49
8 4 3 2012-12-25 14:20:49
现在我知道我必须使用join语句,而使用常规join语句只会给我太多的结果,包括旧的日期。我所要做的就是根据sp_id获取每个电话号码的最新act_名称和act_时间。尝试此查询
phone | lead_sp_id | sp_id | act_time
111 | 1 | 5 | 2012-12-31 14:20:49
222 | 2 | 5 | 2012-12-31 14:20:49
试试这个:
SELECT
*
FROM table1 as t1
INNER JOIN (
SELECT
*
FROM
table2
INNER JOIN (SELECT MAX(act_id) FROM table2 GROUP BY act_id)
as r on r.act_id = table2.act_id
) as t2 on t1.sp_id = t2.sp_id
共享您的查询并明确定义您的问题您在这里对这些表做了什么?解释一下就好了!只是想让你知道,我一直接受正确的答案……还有几个问题我问过,但没有人回答,我不知道这会如何影响这些问题。。。给予与索取更健康、更友好……;-)
SELECT a.phone, b.lead_sp_id, b.sp_id, b.act_time
FROM leadsptable a
INNER JOIN (SELECT a.lead_sp_id, a.sp_id, a.act_time
FROM acttable a
INNER JOIN (SELECT lead_sp_id, MAX(act_time) act_time
FROM acttable GROUP BY lead_sp_id
) b ON a.lead_sp_id = b.lead_sp_id AND a.act_time = b.act_time
) b ON a.lead_sp_id = b.lead_sp_id AND a.sp_id = b.sp_id