MySQL数量不同总是返回' 1'

时间:2017-04-19 10:27:34

标签: mysql

尝试在桌子上做一个明显的计数然而似乎永远不会超过1,将其剥离回到最简单的形式......

MariaDB [cwos]> SELECT count(distinct 'cr') FROM cr_import WHERE cr_import.com_on_date = '2017-03-22';
+----------------------+
| count(distinct 'cr') |
+----------------------+
|                    1 |
+----------------------+
1 row in set (0.00 sec)

MariaDB [cwos]> SELECT count('cr') FROM cr_import WHERE cr_import.com_on_date = '2017-03-22';
+-------------+
| count('cr') |
+-------------+
|         110 |
+-------------+
1 row in set (0.00 sec)

在这个例子中,两者都应该是相同的结果,cr是一个唯一的字段,因此所有110应该被计算在不同的区域,如你所见......

MariaDB [cwos]> SELECT cr FROM cr_import WHERE cr_import.com_on_date = '2017-03-22' limit 5;
+------------+
| cr         |
+------------+
| 8907246/17 |
| 9213268/17 |
| 9213270/17 |
| 9213271/17 |
| 9213273/17 |
+------------+
5 rows in set (0.00 sec)

我错过了一些简单的事吗? (不能将count(cr)用于实际查询,因为在与其他表连接时cr是唯一的,因此我可以使用不同的重复项,因此使用不同的)

3 个答案:

答案 0 :(得分:2)

您当前正在计算字符串文字,因为'cr'是字符串,而不是列。删除那些引号,一切都应该没问题:

SELECT COUNT(DISTINCT cr)
FROM cr_import
WHERE cr_import.com_on_date = '2017-03-22'

至于为什么计数显示为1,您计算的字符串文字对于所有记录都是相同的。

答案 1 :(得分:0)

不要在引号中使用 cr !使用:

将其替换为COUNT(DISTINCT cr)

答案 2 :(得分:0)

您可以按如下方式进行明确计算:

SELECT COUNT(DISTINCT column_name) FROM table_name;

所以在你的情况下,它应该是这样的:

SELECT COUNT(DISTINCT cr) FROM cr_import WHERE cr_import.com_on_date = '2017-03-22';