我有一个小应用程序,负责获取组中的最新帖子。在下面的示例中,我有一个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语句中执行此操作?
答案 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语句是否仍然可以优化,但上面的这个语句给了我正确答案。