【发布时间】:2019-01-11 13:19:02
【问题描述】:
MySQL SQL 没有为具有空值和非空值的记录返回正确的计数
我在一个包含三列(代码、amt、名称)的表中有以下值
"AMPF";"0.1000";"Amplify Inc";
"AMPF";"0.1000";"Amplify Inc";
"AMPF";"0.2000";"Amplify Inc";
"AMPF";"0.2000";"Amplify Inc";
"AMPF";"0.3000";"Amplify Inc";
"AMPF";"0.3000";"";
"AMPF";"0.4000";"";
"XYZA";"0.1000";"PeterPal Inc";
"XYZA";"0.1000";"PeterPal Inc"
我正在运行以下查询来获取特定项目代码存在的记录数。 SELECT code, name, count(amt) as cnt FROM table group by code order by cnt desc limit 30
SELECT code, name, count(amt) as cnt FROM table group by code order by cnt desc limit 30
理想情况下,预期结果应该是:
AMPF,Amplify Inc,7
XYZA,PeterPal Inc,2
但是,结果却是:
AMPF,Amplify Inc,5
XYZA,PeterPal Inc,2
这表明虽然我在 amt 列上进行计数,但它以某种方式在记录号 6 和 7 中为空的 name 列上进行计数。 对我的代码出了什么问题有任何想法吗?
【问题讨论】:
-
请始终标记您正在使用的 DBMS!
-
你的 group by 不应该工作,除非它是 MySQL 并且只有完整的 group by 被禁用。
-
对不起...这是 MySQL