Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL如何获取与同一列中另一个组的值匹配的组?_Mysql_Join_Relational Division - Fatal编程技术网

MySQL如何获取与同一列中另一个组的值匹配的组?

MySQL如何获取与同一列中另一个组的值匹配的组?,mysql,join,relational-division,Mysql,Join,Relational Division,问题是这样的: 寻找那些与西尔维·休姆(Silvie Hume)完全相同的啤酒爱好者 我的代码如下: Here are the tables: Drinker (name, address) Bar (name, address) Beer (name, brewer) Frequents (drinker, bar, times_a_week) Likes (drinker, beer) Serves (bar, beer, price)

问题是这样的: 寻找那些与西尔维·休姆(Silvie Hume)完全相同的啤酒爱好者

我的代码如下:

Here are the tables:  

  Drinker (name, address)  
  Bar (name, address)  
  Beer (name, brewer)  
  Frequents (drinker, bar, times_a_week)  
  Likes (drinker, beer)  
  Serves (bar, beer, price) 
似乎我的输出返回了所有与西尔维·休谟啤酒匹配的饮料。我不知道如何选择和西尔维·休谟喜欢同一套啤酒的饮酒者。有什么帮助吗?谢谢
我试图用=ALL替换IN,但效果不太好

一个选项在Likes表上使用了自联接:


作为一种解释,HAVING条款中的第一个条件断言,某个特定饮酒者的喜好与西尔维·休谟的相符。第二个条件包括边缘情况,即某个特定饮酒者的喜好确实匹配,但西尔维·休姆也有其他喜好。因此,我们断言每位饮酒者的喜好数量与西尔维·休姆相同。

我的问题。尽管如此,请按照草莓公司的建议,提供最少和完整的样本数据,以及相应的预期输出。请参考他共享的链接,编辑您的问题。这是一个常见问题。请总是用谷歌搜索你的问题/问题/目标的许多清晰、简洁和具体的版本/措辞,有或没有你的特定字符串/名称,并阅读许多答案。将发现的相关关键字添加到搜索中。如果你找不到答案,就发布,使用1个变体搜索作为标签的标题和关键字。请参见文本上方的向下投票箭头鼠标。当你有一个非重复代码问题要发布时,请阅读并采取行动。PS你的标题是正确的,只是它碰巧是不可理解的&没有说明你的意思。
SELECT *  
FROM drinker d  
JOIN likes l1 ON d.Name = l1.Drinker  
WHERE l1.Beer IN (SELECT Beer FROM likes l2 WHERE l2.Drinker = 'Silvie Hume');  
SELECT
    t1.drinker
FROM Likes t1
LEFT JOIN Likes t2
    ON t1.beer = t2.beer AND t2.drinker = 'Silvie Hume'
WHERE
    t1.drinker <> 'Silver Hume'
GROUP BY
    t1.drinker
HAVING
    COUNT(*) = COUNT(t2.beer) AND
    COUNT(*) = (SELECT COUNT(*) FROM Likes WHERE drinker = 'Silvie Hume');