在两个表上使用 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
您想加入公共字段上的表。 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;
如果您只想要食物列表,请省略第一个计数 (*)。
我有两张桌子
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
您想加入公共字段上的表。 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;
如果您只想要食物列表,请省略第一个计数 (*)。