首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mysql -匹配所有值的类似IN的操作

Mysql -匹配所有值的类似IN的操作
EN

Stack Overflow用户
提问于 2013-03-07 19:22:59
回答 3查看 803关注 0票数 0

我有一个Orders表,其中包含已订购图书的客户的CustID和BookNo。我有另一个包含所有BookNo的Books表。

我要显示订购了所有BookNo的所有自定义I。

像' in‘这样的函数,它将集合中的所有值都作为'AND’而不是'OR‘来匹配,这样会很方便。

有什么快速的线索,如果没有答案的话?

EN

回答 3

Stack Overflow用户

发布于 2013-03-07 19:26:54

要仅获取订购了所有图书的客户,您可以按每个客户分组,然后计算客户订购的图书数量,并将其与图书总数进行比较

代码语言:javascript
运行
复制
select c.custid 
from customers c
inner join books b on b.bookno = c.bookno
group by c.custid
having count(distinct b.bookno) = (select count(distinct bookno) from books)
票数 0
EN

Stack Overflow用户

发布于 2013-03-07 19:37:39

select count from Orders group by custId having count(*) = (select count(distinct bookNo) from CustID );

票数 0
EN

Stack Overflow用户

发布于 2013-03-07 19:38:38

我不知道使用IN或类似的方法可以做到这一点,但一个简单的GROUP BY/HAVING应该可以很好地做到这一点。添加DISTINCT是为了确保同一本书的两个订单仍然算作一本书。

代码语言:javascript
运行
复制
SELECT CustID
FROM Orders
GROUP BY CustID
HAVING COUNT(DISTINCT BookNo) = (SELECT COUNT(BookNo) FROM Books);

An SQLfiddle for testing

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15269868

复制
相关文章

相似问题

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