Mysql—类似的操作,其中匹配所有值

Mysql—类似的操作,其中匹配所有值,mysql,Mysql,我有一个表Orders,其中包含已订购书籍的客户的CustID和BookNo。 我还有一本桌子上的书,里面有所有的书号 我想显示所有订购了所有书号的客户ID 类似于“IN”函数的东西,它将集合中的所有值匹配为“AND”而不是“OR” 如果没有答案,有什么线索吗 要仅获取订购所有书籍的客户,您可以按每个客户分组,然后计算客户订购的书籍数量,并将其与书籍总数进行比较 select c.custid from customers c inner join books b on b.bookno =

我有一个表Orders,其中包含已订购书籍的客户的CustID和BookNo。 我还有一本桌子上的书,里面有所有的书号

我想显示所有订购了所有书号的客户ID

类似于“IN”函数的东西,它将集合中的所有值匹配为“AND”而不是“OR”


如果没有答案,有什么线索吗

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

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)

按具有count*=选择countdistinct bookNo from Books的custId从订单组中选择custId

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

SELECT CustID
FROM Orders
GROUP BY CustID
HAVING COUNT(DISTINCT BookNo) = (SELECT COUNT(BookNo) FROM Books);