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