为什么在使用分组依据和左连接

时间:2015-07-31 09:21:16

标签: php mysql

这是我的表格架构:

CREATE TABLE users  (`id` int, `name` varchar(50));
INSERT INTO users (`id`, `name`) VALUES (1, 'Test 1'), (2, 'Test 2'), (3, 'Test 3');

CREATE TABLE recipes (`id` int, `user_id` int , `name` varchar(100));
INSERT INTO recipes (`id`, `user_id`, `name`) VALUES 
(null, 1, 'Receipe 1');

我需要单独的用户收据计数,因为我已经将我的用户表加入了收据,请查看以下查询

SELECT `User`.`id`, count('recipes.id') as recipes_cnt FROM `users` AS `User` 
LEFT JOIN `recipes` AS `Recipe` ON (`User`.`id` = `Recipe`.`user_id`) 
GROUP BY `User`.`id`

但即使没有用户的评论(通常应为零),它也会将 计为1

这是mysql fiddle

为什么我会得到这样的结果?

请帮帮我

提前致谢

2 个答案:

答案 0 :(得分:2)

我修改了你的SQL。将count(' recipes.id')替换为count(Recipe。id)。这些结果给出了ZERO。

SELECT `User`.`id`, count(`Recipe`.id) as recipes_cnt FROM `users` AS `User` 
LEFT JOIN `recipes` AS `Recipe` ON (`User`.`id` = `Recipe`.`user_id`) 
GROUP BY `User`.`id`

谢谢。

答案 1 :(得分:1)

你的计数中有一个小错字:

count('recipes.id')

这是在计算字符串 "recipes.id"

您需要按实际列计算:

count(Recipe.id)