这是我的表格架构:
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
为什么我会得到这样的结果?
请帮帮我
提前致谢
答案 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)