Mysql gibt nur eine Zeile zurück, wenn Count verwendet wird

7

Nun, ich habe gerade ein seltsames Verhalten getroffen, das ich noch nie zuvor gesehen habe oder nicht bemerkt habe.

Ich verwende diese Abfrage:

%Vor%

... um 3 Einträge zu lesen, aber dabei möchte ich die gesamten Zeilen erhalten.

Problem ist ...

... wenn ich zähle, gibt die Abfrage nur eine Zeile zurück, aber wenn ich entferne COUNT(*) AS pages - Ich bekomme die 3 Zeilen, wie ich mir vorstellen soll. Offensichtlich vermisse ich hier etwas.

    
Breezer 02.11.2010, 22:36
quelle

3 Antworten

12

Ja, die Anzahl ist ein Aggregatoperator, der nur eine Zeile zurückgibt (ohne eine Gruppenklausel)

Vielleicht zwei getrennte Abfragen? Es macht keinen Sinn, wenn die Zeile die Daten und die Gesamtanzahl der Zeilen zurückgibt, da diese Daten nicht zusammen gehören.

Wenn Sie es wirklich wirklich wollen, können Sie so etwas tun:

%Vor%

oder das:

%Vor%

Mit Varianzen des verschachtelten Ausdrucks in Abhängigkeit von Ihrem SQL-Dialekt.

    
McKay 02.11.2010, 22:38
quelle
9

Mit einer Aggregatfunktion ohne gibt eine GROUP BY immer eine Zeile zurück, egal was passiert. Sie müssen eine GROUP BY verwenden, wenn Sie mehr als eine Zeile zurückgeben möchten.

Beachten Sie, dass eine solche Abfrage in den meisten RDBMS fehlgeschlagen wäre, weil sie keinen Sinn ergibt.

    
Vincent Savard 02.11.2010 22:38
quelle
3

Dies ist ineffizient, funktioniert aber:

%Vor%     
Hamish 02.11.2010 22:49
quelle

Tags und Links