在两个表上使用 Where 和 Count

Using Where and Count on two tables

我有两张桌子

Foods
----------
ID    Name
----------
1. Chips
2. Pizza
3. Fish
4. Pasta

People
-----------------
ID Name    FoodID
-----------------
1. Robert       3
2. Norman       2
3. Leonard      4
4. Huey         3

我应该做的是取回属于多个人的任何食物。现在我应该通过 COUNT 和 WHERE 来做到这一点。可能需要进行 INNER JOIN。

应该很简单,但我就是没看到。

select * from food inner join people  on people.id = food.id group by people.name
select f.name, p.name, count(f.id) as total from foods f, people p 
where (f.id = p.FoodID)
group by f.name
having total > 1
order by f.name

http://sqlfiddle.com/#!9/b2a63/10

您想加入公共字段上的表。 WHERE 用作内部连接。然后 GROUP BY Foods.name 按食物类型聚合行。 Count 是一个聚合运算符,始终与 GROUP BY 一起使用。

SELECT Foods.Name, Count(*)
FROM Foods, People
WHERE Foods.ID = People.Food
GROUP BY Foods.Name
HAVING COUNT(*)>1;

如果您只想要食物列表,请省略第一个计数 (*)。