MySql - 获取与另一列中的所有值关联的列的值

时间:2013-12-11 17:52:19

标签: mysql

我无法真正表达得很清楚,但我需要的是一个查询,它允许我从表A的列中获取与表B的列中的所有值相关联的所有元素。这是一个示例: 这是一张包含餐馆和食物的桌子,如下所示:

restaurant   ||  food
========================
         r1  ||  f1
         r1  ||  f2
         r1  ||  f3
         r2  ||  f1
         r3  ||  f3
         r3  ||  f4

然后这张桌子里只包含一列食物:

foods
======
f1
f2
f3

我想要的是获得所有餐厅的名称,这些餐馆都有第二张桌子上的所有食物。在这个例子中,结果将是:

restaurant
==========
r1

我已经尝试但我不是很有经验,我只知道如何让所有餐馆都有食物出现在第二张桌子里。

任何帮助都会得到帮助;)

3 个答案:

答案 0 :(得分:0)

您可以在where条件中使用IN来检查

Select restaurant from table1 where food in (select foods from table2)

如果您想查看第二个表格中的特定食物,请按以下步骤更改查询

Select restaurant from table1 where food = 'f1'

答案 1 :(得分:0)

您也可以使用内部联接:像这样:

select a.restaurant from table1 a inner join table2 b on(a.food=b.food)

答案 2 :(得分:0)

SQL Fiddle

SELECT restaurant FROM table1  
GROUP BY restaurant 
HAVING COUNT(DISTINCT food)=3;

将3替换为您拥有的不同食物的数量。,如果您不想手动计数

SELECT restaurant FROM table1  
GROUP BY restaurant 
HAVING COUNT(DISTINCT food)=(SELECT COUNT(DISTINCT foods) FROM table2 );

SQL Fiddle

相关问题