尝试在桌子上做一个明显的计数然而似乎永远不会超过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是唯一的,因此我可以使用不同的重复项,因此使用不同的)
答案 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';