Ich habe eine mysql Select-Abfrage, die eine groupBy hat. Ich möchte alle Datensätze nach der Gruppe nach Anweisung zählen. Gibt es einen Weg dafür direkt von MySQL?Anzahl der Datensätze nach groupBy auswählen
danke.
Ich habe eine mysql Select-Abfrage, die eine groupBy hat. Ich möchte alle Datensätze nach der Gruppe nach Anweisung zählen. Gibt es einen Weg dafür direkt von MySQL?Anzahl der Datensätze nach groupBy auswählen
danke.
Sie können FOUND_ROWS() nur überprüfen verwenden:
SELECT <your_complicated_query>;
SELECT FOUND_ROWS();
Es ist wirklich für die Verwendung mit LIMIT gedacht und sagt Ihnen, wie viele Zeilen ohne LIMIT zurückgegeben worden wären, aber es scheint gut für Abfragen zu funktionieren, die LIMI nicht verwenden T.
Vergessen Sie 'SQL_CALC_FOUND_ROWS' nicht nach' SELECT'. – sectus
sehen diese Abfrage für Beispiele:
Diese Abfrage verwendet wird, um die zur Verfügung stehenden Zimmer Rekord für ein Hotel zu finden, das
SELECT a.type_id, a.type_name, a.no_of_rooms,
(SELECT SUM(booked_rooms) FROM reservation
WHERE room_type = a.type_id
AND start_date >= '2010-04-12'
AND end_date <= '2010-04-15') AS booked_rooms,
(a.no_of_rooms - (SELECT SUM(booked_rooms)
FROM reservation
WHERE room_type = a.type_id
AND start_date >= '2010-04-12'
AND end_date <= '2010-04-15')) AS freerooms
FROM room_type AS a
LEFT JOIN reservation AS b
ON a.type_id = b.room_type
GROUP BY a.type_id ORDER BY a.type_id
Wenn das einzige, was Sie brauchen, ist die Anzahl nach der Gruppierung, und Sie wollen nicht 2 separate Abfragen verwenden, um die Antwort zu finden. Sie können es mit einer Sub-Abfrage tun, wie so ...
select count(*) as `count`
from (
select 0 as `doesn't matter`
from `your_table` yt
group by yt.groupfield
) sq
Hinweis: Sie müssen tatsächlich etwas in der Sub-Abfrage wählen, aber was Sie wählen spielt keine Rolle
Hinweis: Alle temporären Tabellen Haben Sie einen Namen Alias, daher die "sq" am Ende
würden Sie die Abfrage buchen? – Karthik
was hast du bisher versucht? – Salil