簡體   English   中英

如何按數據庫中的兩列分組?

[英]How to group by two columns in Database?

我想在數據庫中列出所有對話對。 我將表message存儲在有關消息信息的存儲位置。
我也嘗試過此方法,但對我不起作用,因為指定的唯一選擇列是鏈接
防爆。 $_SESSION['userid'] = 1

表消息

sender_id   sendto_id    created(datetime)
1           2
1           2
1           3
1           4
3           1
3           1
2           4
4           2

我的結果聲望介於1,33,1之間。

sender_id   sendto_id
1           2
1           3
1           4
3           1

我只想這樣,讓我們​​為每對選擇最新添加的字段。 防爆。 1-2(1) 1-2(2)2-1它應該是2-1如果2-1是最新或1-2(2)如果它最新。

sender_id   sendto_id   created(datetime)
2           1           newest of pair 1-2 or 2-1
1           3           newest of pair 1-2 or 2-1
1           4           newest of pair 1-2 or 2-1

還有我的SQL,請幫忙! 謝謝。

select m.*,
       (select MAX(created)
          from message n
         where (n.senderid = m.sendtoid AND n.sendtoid = '$userid')
            OR (n.senderid = '$userid' AND n.sendtoid = m.sendtoid)) lastsend
  from message m
 where (m.senderid = '$userid' OR m.sendtoid = '$userid')
 group by m.senderid, m.sendtoid
 order by lastsend desc

這是你想要的嗎?

select least(sender_id, sendto_id) as sender_id,
       greatest(sender_id, sendto_id) as sendto_id,
       min(created_datetime)
from message m
group by least(sender_id, sendto_id), greatest(sender_id, sendto_id);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM