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'