选择DISTINCT并选择COUNT

时间:2017-09-09 15:45:00

标签: mysql

我使用的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个计数。我的查询出了什么问题?

1 个答案:

答案 0 :(得分:3)

为什么你需要加入?将COUNT()GROUP BY一起使用可以获得相同的预期结果:

  SELECT item_name,
         COUNT(*) AS count
    FROM stocks
GROUP BY item_name;