在mysql中按组ID分组用户,从结果中排除指定的用户ID?

时间:2016-03-14 05:16:35

标签: mysql sql

我有一个小应用程序,负责获取组中的最新帖子。在下面的示例中,我有一个MySQL表格格式如下:

groupid      userid    date_updated
1            1          [date]
1            2          [date]
2            1          [date]
2            2          [date]
2            3          [date]
...

我如何做一个SQL语句,因为结果以这种方式发出(假设我给userid的值为1):

groupid      userid     date
1            2          [date]
2            2          [date]
2            3          [date]

这些都按日期排序。您可能已经注意到,结果不包括提供的userid(因为要求只是为了获取除提供的用户ID之外的用户)。换句话说,在指定用户所属的组中仅显示指定用户以外的用户。

是否可以在单个SQL语句中执行此操作?

4 个答案:

答案 0 :(得分:1)

在哪里搜索选择查询

select * from table where userid != '1'

答案 1 :(得分: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;

答案 2 :(得分:0)

您可以使用此

SELECT tbl.* FROM (SELECT * FROM tablename ORDER BY date DESC) as tbl GROUP BY tbl.groupid

答案 3 :(得分:0)

我设法通过这个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语句是否仍然可以优化,但上面的这个语句给了我正确答案。