我使用的SQL查询似乎在计算不同的选择时遇到问题。这是查询:
SELECT DISTINCT a.item_name,
(SELECT count(c.item_name) FROM stocks c
WHERE a.item_name = c.item_name) as 'count'
FROM stocks a;
我的数据库中有4行包含apple
和2行包含banana
的行,其中包含不同的条形码,如下所示:
+-------------+-----------+
| item_name | barcode |
+-------------+-----------+
| apple | 1283123 |
| apple | 1231231 |
| apple | 1231312 |
| apple | 1231312 |
| bananas | 1231312 |
| bananas | 1231312 |
+-------------+-----------+
使用上面的查询给我输出
+-------------+-----------+
| item_name | barcode |
+-------------+-----------+
| apple | 5 |
| bananas | 2 |
+-------------+-----------+
查询总是向第一行添加1个计数。我的查询出了什么问题?
答案 0 :(得分:3)
为什么你需要加入?将COUNT()
与GROUP BY
一起使用可以获得相同的预期结果:
SELECT item_name,
COUNT(*) AS count
FROM stocks
GROUP BY item_name;