我有一個Chat_User連接表,并且想要檢索ChatIda指定的和之間UserId的。xy
Chat_User桌子:
Id ChatId UserId
1 a x <===
2 b z
3 a y <===
4 c x
我試過:
SELECT ChatId
WHERE UserId IN ('x','y')
GROUP BY ChatId;
但它回傳and ChatId,但我只想要,因為它同時具有我指定的(和)。acaUserIdxy
有什么辦法可以做到這一點?
謝謝
uj5u.com熱心網友回復:
聚合提供了一種方法:
SELECT ChatId
FROM yourTable
WHERE UserId IN ('x', 'y')
GROUP BY ChatId
HAVING MIN(UserId) <> MAX(UserId);
uj5u.com熱心網友回復:
另一種方法是僅從您知道自己想要的一個開始,然后通過該 ID 和其他用戶重新自加入到同一個表。確保 (userid, chatid) 上的表上有索引,以幫助優化查詢。
select distinct
YT.ChatID
from
YourTable YT
JOIN YourTable YT2
on YT2.UserID = 'y'
AND YT.ChatID = YT2.ChatID
where
YT.userID = 'x'
這樣,外部 WHERE 子句只考慮至少一方的聊天,所以你甚至不考慮其他任何人。只有在那些具有“x”的人之后,它才會考慮查看具有相同聊天的“y”用戶的第二個實體。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/467189.html
