首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL复杂Where语句

MySQL复杂Where语句
EN

Stack Overflow用户
提问于 2021-03-26 09:01:00
回答 1查看 39关注 0票数 0

我正在尝试从用户不在的组中获取组名和组类型。在我添加"AND NOT EXISTS“语句之前,一切都正常,但我不想要每个组,只想要用户不在其中的组。

代码语言:javascript
复制
Select g.groupName AS groupName, g.groupType AS groupType, COUNT(*) AS total from Groups AS g
JOIN Group_Interest AS gi ON gi.groupId=g.groupId WHERE gi.interestId IN (
     Select interestId FROM User_Interest WHERE userId=214
) AND NOT EXISTS (
     SELECT groupName FROM Groups AS g JOIN User_Joined_Group AS ujg ON ujg.groupId=g.groupId WHERE userId=214
)
GROUP BY groupName
ORDER BY COUNT(*) DESC
LIMIT 10;
EN

回答 1

Stack Overflow用户

发布于 2021-03-29 21:33:06

这个查询应该是有效的:

代码语言:javascript
复制
SELECT g.groupName AS groupName, g.groupType AS groupType, COUNT(*) AS total 
FROM Groups AS g
JOIN Group_Interest AS gi ON gi.groupId = g.groupId 
JOIN User_Interest AS ui ON gi.interestId = ui.interestId
JOIN User_Joined_Group AS ujg ON ujg.groupId = g.groupId
WHERE ui.userId = 214 AND ujg.userId != 214
GROUP BY groupName, groupType
ORDER BY COUNT(*) DESC
LIMIT 10;

这样的查询也应该有效:

代码语言:javascript
复制
SELECT g.groupName AS groupName, g.groupType AS groupType, COUNT(*) AS total 
FROM Groups AS g
JOIN Group_Interest AS gi ON gi.groupId = g.groupId 
WHERE gi.interestId IN (
     SELECT interestId FROM User_Interest WHERE userId = 214
) AND NOT EXISTS (
     SELECT 1 FROM User_Joined_Group AS ujg ON ujg.groupId = g.groupId WHERE ujg.userId = 214)
GROUP BY groupName, groupType
ORDER BY COUNT(*) DESC
LIMIT 10;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66809624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档