首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查表是否与选择查询相同

检查表是否与选择查询相同
EN

Stack Overflow用户
提问于 2014-03-03 15:50:46
回答 1查看 39关注 0票数 0

我有带有静态数据(states(id, name))和表user_states(user_id, state_id)的表

我如何知道表user_states中的某些用户(例如id = '11')是否都是从表states中恢复的?

如果表states有50个状态,那么检查id '11‘的用户是否拥有所有50个状态。

我读过关于解决方案的文章,如何检查表中的数据是否相同:

代码语言:javascript
复制
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

如果此查询的计数行大于此表的计数,则该表的计数比表不相同。但是,如果一个表与另一个表有相同的行,但不是全部,那么这个查询就不太好了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-03 15:55:04

使用Group ByHaving

代码语言:javascript
复制
SELECT
    ul.user_id
    count(1)
FROM user_states
GROUP BY ul.user_id
HAVING count(1) = 50

这将计算每个用户拥有的状态数,并且只返回有50个状态的用户。如果要检查特定用户,请添加Where子句。如果id 11的用户没有全部50种状态,则不会返回任何行。

代码语言:javascript
复制
SELECT
    ul.user_id
    count(1)
FROM user_states
WHERE ul.user_id = 11
GROUP BY ul.user_id
HAVING count(1) = 50
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22151157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档