MYSQL - 查找一个表中的记录不存在,在另一
问题描述:
我已经得到了以下两个SQL表(在MySQL):MYSQL - 查找一个表中的记录不存在,在另一
Users | id | name | |----|------| | 1 | Luke | | 2 | Mark | | 3 | Lucy | | 4 | Biff |
User category | user_id | category_id | |---------|-------------| | 1 | 5 | | 1 | 6 | | 2 | 5 | | 2 | 7 | | 3 | 5 |
我想是用户在用户类别中,但如果类别标识为6,则不适用。
在这种情况下,马克和露西因为卢克也在类别6中,而且比夫没有类别。
有没有办法做到这一点,没有子查询,只有在一个查询?
答
您可以group by
USER_ID和消除这些行,其中有6。
select uc.user_id,u.name
from user_category uc
join users u on uc.user_id = u.id
group by uc.user_id,u.name
having sum(case when category_id = 6 then 1 else 0 end) = 0
+2
'HAVING COUNT(case category_id = 6 then 1 END) 1' –
ATLEAST一个CATEGORY_ID是否有任何理由背后*有一个办法做到这一点没有子查询,只有在一个查询?* –
没有特定的原因,它只是出于概念上的原因 – Vega