Mysql选择不同的值和最后一行

时间:2016-03-11 09:40:40

标签: php mysql

很简单。

msg_id    msisdn           message 
----------------------------------   
1000      661000           text1   
1001      661002           text2   
1002      661004           text3   
1003      661002           text4   
1004      661002           text5     
1005      661002           text6  

我需要获得从最新到最旧排序的不同msisdn值以及最后一行中的所有值。请理解真实查询中有更多的coluns,所以我需要获得不同的msisdn - 而且还需要使用该msisdn获取最后一行的所有数据。

msisdn     msg_id    message   
----------------------------- 
661002     1005      text6   
661004     1002      text3   
661000     1000      text1     

谢谢!

要清楚。我开始时:

通过msisdn

从表组中选择distinct(msisdn),max(msg_id)

然而,提取有关max(msg_id)的所有信息都是问题...我需要查询中的整行,而不仅仅是msg_id ......

希望现在一切都清楚了。

2 个答案:

答案 0 :(得分:3)

您可以使用包含每msg_id个最大msisdn的派生表,然后加入此表以获取其余列:

select t1.*
from mytable as t1
inner join (
   select msisdn, max(msg_id) as last_id
   from mytable
   group by msisdn
) as t2 on t1.msisdn = t2.msisdn and t1.msg_id = t2.last_id

答案 1 :(得分:0)

select msisdn,msg_id,max(message)
from table1
group by msg_id,msisdn
order by msg_id desc