我有带有静态数据(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如果此查询的计数行大于此表的计数,则该表的计数比表不相同。但是,如果一个表与另一个表有相同的行,但不是全部,那么这个查询就不太好了。
发布于 2014-03-03 15:55:04
使用Group By和Having。
SELECT
ul.user_id
count(1)
FROM user_states
GROUP BY ul.user_id
HAVING count(1) = 50这将计算每个用户拥有的状态数,并且只返回有50个状态的用户。如果要检查特定用户,请添加Where子句。如果id 11的用户没有全部50种状态,则不会返回任何行。
SELECT
ul.user_id
count(1)
FROM user_states
WHERE ul.user_id = 11
GROUP BY ul.user_id
HAVING count(1) = 50https://stackoverflow.com/questions/22151157
复制相似问题