2014-10-17 37 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