[英]Grouping users by group ids in mysql, exclude specified userid from the results?
我的任務是一個小應用程序,它處理獲取組中的最新帖子。 在下面的這個示例中,我有一個格式如下的 MySQL 表:
groupid userid date_updated
1 1 [date]
1 2 [date]
2 1 [date]
2 2 [date]
2 3 [date]
...
我如何執行 SQL 語句,例如以這種方式輸出結果(假設我給了一個值為 1 的userid
):
groupid userid date
1 2 [date]
2 2 [date]
2 3 [date]
這些都是按日期排序的。 您可能已經注意到,結果不包括提供的userid
(因為要求僅獲取提供的用戶 ID 以外的用戶)。 換句話說,僅顯示指定用戶所屬組中指定用戶以外的用戶。
是否可以在單個 SQL 語句中執行此操作?
使用 where 搜索選擇查詢
select * from table where userid != '1'
嘗試以下解決方案。
select
tbl.*
from
tbl INNER JOIN
(select groupid, userid, max(date_updated)
from tbl
group by groupid, userid) tbl2
USING(groupid, userid)
ORDER BY tbl.date_updated;
你可以用這個
SELECT tbl.* FROM (SELECT * FROM tablename ORDER BY date DESC) as tbl GROUP BY tbl.groupid
我設法用這個 SQL 語句在這里找到了我的問題的可能答案:
SELECT a.groupid, a.userid, a.date_updated
FROM group_participants a
WHERE a.groupid IN (
SELECT DISTINCT b.groupid FROM group_participants b WHERE b.userid = 1
)
AND a.user_id <> 1
GROUP BY a.userid
ORDER by a.date_updated DESC
謝謝你們發布的那些 SQL 語句,給了我一個想法。 不知道上面的SQL語句是否還可以優化,但是上面的這個給了我正確的答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.