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。(是的,你是对的,为什么他们会这么做!)