我的SQL计数查询有什么问题?

时间:2016-11-11 17:41:11

标签: mysql sql count

我有一张包含所有库存ID的表格,并且都是重复的。所以我正在看这样一张桌子:

   ItemID   |   Price 
   1        |   5.50 
   1        |   5.50 
   2        |   6.50
   2        |   6.50

依此类推......

现在,当我运行这样的查询时:

SELECT ItemID, COUNT(*) AS count
FROM Inventory
GROUP BY ItemID

我得到以下结果:

   ItemID   |   count  
   1        |   1 
   1        |   1  
   2        |   1 
   2        |   1

为什么当它显然为2时,它给我一个1的计数?

编辑:正如大多数人指出的那样,这是由于ItemID中有一个额外的字符。有一个换行符,其中一个是重复的。怎么到那里,我不确定。但感谢您的帮助。

4 个答案:

答案 0 :(得分:0)

如果ItemId看起来像一个数字,那么您将其转换为数字:

SELECT ItemID + 0, COUNT(*) AS count
FROM Inventory
GROUP BY ItemID + 0;

然而,根本问题是你似乎在ItemId中有你不期望的角色。这些可能就像字符串末尾的空格一样简单,也可能是另一种隐藏字符。

答案 1 :(得分:0)

有很多方法,比如添加coloum_name + 0和trim(coloum_name),但你应该这样做 将您的表ItemID更改为int或使用trim

更新表数据

答案 2 :(得分:0)

尝试使用

删除隐藏的字符
SELECT trim(ItemID), COUNT(*) AS count
FROM Inventory
GROUP BY trim(ItemID)

答案 3 :(得分:0)

SELECT itemId,count(count)as have_this_many
来自库存 WHERE(SELECT DISTINCT(itemId)= itemId) GROUP BY itemId ORDER BY itemId

我不确定字段名称等于SQL函数会产生什么影响,但我会将其命名为“on_hand”。