我有静态数据表(states(id, name)
)和表user_states(user_id, state_id)
我怎么知道表user_states
中的某些用户(例如id = '11')是否都来自表states
?
如果表states
有50个状态,则检查ID为“11”的用户是否具有全部50个状态。
我读了解解决方案,如何检查表的数据是否相同:
SELECT ul.location_id
FROM bt_user_location ul
JOIN bt_location_region llr ON (ul.location_id = llr.id)
WHERE ul.user_id= 11
UNION
SELECT lr.id
FROM bt_location_region lr
如果此查询的计数行数大于此表中任何一个表的计数,则表不相同。但是,如果一个表与另一个表具有相同的行但不是全部,那么此查询将不会很好。
答案 0 :(得分:0)
使用Group By
和Having
。
SELECT
ul.user_id
count(1)
FROM user_states
GROUP BY ul.user_id
HAVING count(1) = 50
这将计算每个用户拥有的状态数,并仅返回具有50个状态的用户。如果要检查特定用户,请添加Where
子句。如果标识为11
的用户没有全部50个状态,则不会返回任何行。
SELECT
ul.user_id
count(1)
FROM user_states
WHERE ul.user_id = 11
GROUP BY ul.user_id
HAVING count(1) = 50