EDIT: Wie sich herausstellt, scheint es, dass der Code wie vorgesehen ausgeführt wird. Es war nur ein Debugging-Problem. Entschuldigen Sie bitte die Störung!Mysql FOUND_ROWS mit HAVING-Anweisung
Ich führe eine große Abfrage, die mehrere Filter und JOINs beteiligt, und auch ich paginieren die Ergebnisse daher die Abfrage wurde zweimal ausgeführt.
Ich versuchte SQL_CALC_FOUND_ROWS
mit zweimal lief die Abfrage zu vermeiden, aber da ich Filterung mit HAVING
Aussagen Ich erhalte die ungefilterten Gesamt, vor der „mit Aussage“. Ich muss die HAVING
ausführen, da die ursprüngliche Abfrage auf dem Zählen von Zeug beruht - was ich weiß, ist schrecklich, aber ich habe nicht die Berechtigungen, die DB-Struktur jetzt zu ändern.
Eine Idee meiner SQL:
SELECT SQL_CALC_FOUND_ROWS u.id as user_id,
u.full_name as full_name,
u.email as email,
COUNT(stuff) as logs,
FROM
user u
LEFT JOIN
profile u_p on u_p.user_id = u.id
GROUP BY u.id
HAVING logs>5
LIMIT 15
wenn ich die neue SQL-Abfrage SELECT FOUND_ROWS() as total_rows
ich den vollen Betrag von u.id
ROWS bekommen laufen und nicht die, die gefiltert. (Dies geschieht nur mit einer HAVING
Anweisung, und nicht eine WHERE
Klausel)
Was willst du hier vom 'LEFT JOIN'? –
Es war nur ein Beispiel SQL in der tatsächlichen SQL Ich habe viel mehr Zeilen ausgewählt, einige aus dem Profil. Wie auch immer, es war schlecht. Der Code lief wie beabsichtigt – user982962
Sie können nicht einmal die Mühe machen, eine Frage Eigenschaft zu schreiben, und Sie erwarten, dass Menschen Ihr Problem verstehen und Ihnen dabei helfen. Du bist der schlimmste aller Menschen! – ant