2014-10-17 40 views
0

我想在列A中选择最大值。现在,在列A中有多个最大值。我怎样才能用最大值取1行并将其余的关闭?我尝试使用distinctlimit 1没有成功。当多个最大值时只选择1行

预计:只有2行,1有消息“srth”,另一个有“the-same-ts-1”或“the-same-ts-2”但不是两者,因为他们有相同的最高TS 1413588888

我的查询:

SELECT A.*, DU.user as username, DU.thumbnail 
      FROM DB_CHATS A 
      INNER JOIN (
       SELECT distinct max(timestamp) TS, user, partner 
       FROM db_chats 
       GROUP BY user,partner) T 
       on A.TimeStamp=T.TS 
      and A.user=T.User 
      LEFT JOIN db_users DU on t.partner = DU.id 
where A.user = 'utQ8YDxD6kSrlI5QtFOUAE4h' 

小提琴:sqlfiddle

+0

假设你的查询是正确的 - 究竟是用'限1'问题? – dognose 2014-10-17 21:33:19

+0

它仍然返回2行。也许我把它放错了?我把它放在'GROUP BY用户,伙伴' – Patrick 2014-10-17 21:35:41

回答

1

如果你不在乎已经返回该行最大时间戳,您可以添加group by user, partner, timestamp到年底你查询。

SELECT A.*, DU.user as username, DU.thumbnail 
      FROM DB_CHATS A 
      INNER JOIN (
       SELECT distinct max(timestamp) TS, user, partner 
       FROM db_chats 
       GROUP BY user,partner) T 
       on A.TimeStamp=T.TS 
      and A.user=T.User 
      LEFT JOIN db_users DU on t.partner = DU.id 
where A.user = 'utQ8YDxD6kSrlI5QtFOUAE4h' 
group by user, partner, timestamp 

http://sqlfiddle.com/#!2/efe6e/2

+0

谢谢,你能添加表名吗? – Patrick 2014-10-17 22:15:14

+0

非常感谢您的帮助! – Patrick 2014-10-17 22:24:45