簡體   English   中英

在mysql中按組ID對用戶進行分組,從結果中排除指定的用戶ID?

[英]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.

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