2017-04-19 2 views
0

Der Versuch, eine Zählung verschieden auf einem Tisch zu tun, aber nie mehr als 1 zu gehen scheint, es gleich wieder auf einfachste Form Strippen ...MySQL zählen verschiedene immer wiederkehrender ‚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) 

In diesem Beispiel sollte sowohl dem gleichen Ergebnis führen, ist cr ein eindeutiges Feld so sollten alle 110 auf verschiedene gezählt werden, wie Sie sehen können ...

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) 

Habe ich etwas verpasst einfach? (Kann nicht verwenden count (cr) für tatsächliche Abfragen als während cr eindeutig zuzuordnen ist, wenn sie mit anderen Tabellen verknüpfen kann ich mit mehreren Duplikaten daher mit deutlichen am Ende)

Antwort

2

Sie sind zur Zeit einen Stringliteral zählen, weil 'cr' ein String , keine Spalte. So entfernen Sie diese Zitate und alles sollte in Ordnung sein:

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

Was, warum die Zählung als 1 zeigt nach oben, die Stringliteral ist das gleiche für alle Datensätze gezählt.

+0

DOH! Ja totaler Idiot Moment ... Danke :) – Dan

0

Verwenden Sie nicht cr in Anführungszeichen! Verwendung:

Ersetzen Sie es mit COUNT(DISTINCT cr)

0

Sie können eine eigene Zählung wie folgt vorgehen:

SELECT COUNT(DISTINCT column_name) FROM table_name; 

Also in Ihrem Fall sollte es so sein:

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