Mysql 检查一个表中的某个值是否引用了另一个表中所有可能的行

Mysql 检查一个表中的某个值是否引用了另一个表中所有可能的行,mysql,sql,Mysql,Sql,我有一个名为“buys”的表,其中包含clientID和itemName以及其他不相关的列,还有一个表“item”包含“itemName”和itemType列。 我需要一个查询,该查询将显示在“item”表中购买所有可能项目的所有客户,而不使用计数函数。 我尝试使用“存在”和“不存在”,但找不到使用它的方法 从购买中选择* 从项目中选择* 如果您知道项目表中有3个项目,则可以执行以下操作: select cid from buys group by cid having count(disti

我有一个名为
“buys”
的表,其中包含
clientID
itemName
以及其他不相关的列,还有一个表
“item”
包含
“itemName”
itemType
列。 我需要一个查询,该查询将显示
“item”
表中购买所有可能项目的所有客户,而不使用计数函数。 我尝试使用
“存在”
“不存在”
,但找不到使用它的方法

从购买中选择*

从项目中选择*


如果您知道项目表中有3个项目,则可以执行以下操作:

select cid from buys group by cid 
having count(distinct iname) = 3;
或者如果你喜欢嵌套的话

select cid from buys group by cid 
having count(distinct iname) = (select count(iname) from item);
如果你真的想要一些没有计数的东西,那么这不是一个很好的查询,但可以:

select cid from buys group by cid
having group_concat(distinct iname order by iname) like 'cappuccino,macchiato,orange juice'

记住在like匹配中按名称对物品进行排序,请参见上面的查询

,这样您想要一个至少购买过每种可能物品一次的客户列表?为什么没有计数函数呢?plz提供表结构、数据、查询、预期结果。如果您想显示购买了所有商品的所有客户,则无需计数。Count仅用于获取多个已获取的行。让我们看看你的问题。看一下VisualJoin,您应该已经显示了您的现有查询。如果一个客户买了几样东西,你的桌子结构就有问题。不,不是。不要使用评论框粘贴重要问题相关信息。编辑您的问题并添加询问的信息。
select cid from buys group by cid 
having count(distinct iname) = (select count(iname) from item);
select cid from buys group by cid
having group_concat(distinct iname order by iname) like 'cappuccino,macchiato,orange juice'