Sql 检查表是否与select查询相同

Sql 检查表是否与select查询相同,sql,select,equals,Sql,Select,Equals,我有一个带有静态数据的表(状态(id,name))和表用户状态(user\u id,state\u id) 我如何知道表user\u states中的某些用户(例如id='11')是否都是表states中的记录 如果表状态有50个状态,则检查id为“11”的用户是否拥有全部50个状态 我读过关于解决方案,如何检查表中的数据是否相同: SELECT ul.location_id FROM bt_user_location ul JOIN bt_location_region llr ON

我有一个带有静态数据的表(
状态(id,name)
)和表
用户状态(user\u id,state\u id)

我如何知道表
user\u states
中的某些用户(例如id='11')是否都是表
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

若此查询的计数行大于此表中任何一个表的计数,则比表不相同。但是,如果一个表的行与另一个表的行相同,但不是全部,那么此查询将不好。

使用
分组依据
拥有

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) = 50

这是否假定用户没有重复的状态?(即:它返回的用户有50个状态,而不是50个不同的状态?@Mike是的,这将假设。我的假设是一个用户只有一个状态(因为为什么他们会有一个状态不止一次?)谢谢Dave。我只是想检查一下我是否正确理解了SQL。(是的,你是对的,为什么他们会这么做!)