2010-12-11 28 views
1

Ich habe eine Tabelle wie diese id, name, datetime, die mehrere Einträge pro Tag speichern kann, jetzt suche ich nach einer Möglichkeit, den Tag mit den höchsten Anzahl von Einträgen in nur einer Abfrage auszuwählen.Sortieren nach Anzahl der Einträge in MySQL

Bis jetzt machte ich eine Schleife durch alle Einträge und einen $highest Integer gegen jeden Wert zu vergleichen, aber es gibt eine einfachere Möglichkeit, es mit einer SQL-Abfrage zu tun. Ideen jemand?

aktualisieren:

Die Tabelle sieht im Grunde so etwas wie diese

 
id, name, datetime 
1, test, 2010-12-01 12:12:12 
2, test2, 2010-11-30 12:12:12 
3, test3, 2010-11-30 13:13:13 
4, test4, 2010-10-29 12:12:12

das Ergebnis brauchen würde 2010-11-30 sein, weil es zwei Einträge aus diesem bestimmten Tag, und es ist tatsächlich der „höchste Tag "(oder Tag mit der höchsten Anzahl an Einträgen).

+1

Die Antworten, die Sie jetzt haben, korrekt aussehen. Was bedeutet "nicht wie erhofft"? –

+0

Beide Skripts geben das Datum mit der höchsten Anzahl an Einträgen nicht zurück. – baik

+1

Ich habe eine temporäre Tabelle mit Ihren vier Testzeilen erstellt und die Abfragen der vorhandenen Antworten ausgeführt. Sie liefern das Ergebnis, nach dem Sie fragen (2010-11-30) . –

Antwort

3

Versuchen Sie folgendes:

SELECT DATE(`datetime`) AS `date` 
FROM your_table 
GROUP BY `date` 
ORDER BY COUNT(*) DESC 
LIMIT 1 
+0

Leider hat das nicht wie erhofft funktioniert, meine Frage könnte irreführend gewesen sein, ich habe sie entsprechend aktualisiert. – baik

+1

Diese Abfrage gibt '| zurück 2010-11-30 | 'das ist das Datum mit den meisten Einträgen. Das hast du verlangt. –

+0

arbeitete jetzt wie ein Zauber, mein Fehler, ich habe auch 'datetime' Label für die' date' Spalte verwendet, die nicht geklappt hat. – baik

4
SELECT id, name, DATE(`datetime`) AS `date`, COUNT(*) AS `count` 
FROM things 
GROUP BY `date` 
ORDER BY `count` DESC 

Wenn Sie nur die höchste Tag wollen, ein LIMIT 1 am Ende hinzufügen.

Beachten Sie, dass die id und name aus einem zufälligen Datensatz an diesem Tag stammen. Wenn Sie alle Datensätze an diesem bestimmten Tag möchten, müssen Sie eine andere Abfrage ausführen oder eine Unterabfrage verwenden.

+0

Leider funktionierte das nicht wie erhofft, meine Frage war vielleicht irreführend, ich habe sie entsprechend aktualisiert. – baik

+0

Diese Abfrage gibt zurück: '| 2 | test2 | 2010-11-30 | 2 | 'ist eine Zeile, die dem Datum mit den meisten Einträgen entspricht. Das hast du verlangt. –

+0

Arbeitete jetzt mit COUNT (*), danke! – baik