Ich versuche, den effizientesten Weg herauszufinden, um den neuesten Datensatz jeder Gruppe abzurufen.MySQL - unterschiedliches Ergebnis zur Anzeige des letzten Datensatzes jeder Gruppe
Ich kann zwei verschiedene Abfragen generieren. Aber die Details sind etwas anders.
Dies sind gcm_notification
Datensätze. Es sind mehr Datensätze vorhanden. Aber jetzt möchte ich mich nur auf einen einzigen Datensatz konzentrieren. Aus dem Bild können wir die latest id = 1393
mit dem flag = 1
SELECT id, post_id, registration_id, flag
FROM gcm_notification
WHERE post_id = 1743
AND registration_id = "ezDCef_3ORo:APA91bG-sSjaMR9OwylrV7A0H7dvTEAfwJNYGUa3Ud5QZhNIh7-r2peLrb9H33pUs_KJkYisnsIUL4bUT1xrqffOv2jYXBB348oNgNVmLHGZrmgLFdWQiSVRfq9A8BhAGoBB0xN-aDs-"
Jetzt sehe ich versuche das neueste Datensatz jeder Gruppe unter Verwendung von 2 verschiedenen Abfragen abzurufen.
Option 1:
SELECT MAX(id) as latest_id, post_id, flag
FROM gcm_notification
WHERE registration_id = "ezDCef_3ORo:APA91bG-sSjaMR9OwylrV7A0H7dvTEAfwJNYGUa3Ud5QZhNIh7-r2peLrb9H33pUs_KJkYisnsIUL4bUT1xrqffOv2jYXBB348oNgNVmLHGZrmgLFdWQiSVRfq9A8BhAGoBB0xN-aDs-"
GROUP BY post_id
Option 2:
SELECT id, post_id, flag
FROM gcm_notification t1
RIGHT JOIN (
SELECT MAX(id) AS latest
FROM wp_spc_gcm_notification
WHERE registration_id = "ezDCef_3ORo:APA91bG-sSjaMR9OwylrV7A0H7dvTEAfwJNYGUa3Ud5QZhNIh7-r2peLrb9H33pUs_KJkYisnsIUL4bUT1xrqffOv2jYXBB348oNgNVmLHGZrmgLFdWQiSVRfq9A8BhAGoBB0xN-aDs-"
GROUP BY post_id) t2
ON t1.id = t2.latest
WHERE registration_id = "ezDCef_3ORo:APA91bG-sSjaMR9OwylrV7A0H7dvTEAfwJNYGUa3Ud5QZhNIh7-r2peLrb9H33pUs_KJkYisnsIUL4bUT1xrqffOv2jYXBB348oNgNVmLHGZrmgLFdWQiSVRfq9A8BhAGoBB0xN-aDs-"
GROUP BY post_id
Wie Sie sehen können, zeigt Option 2 das korrekte Ergebnis an.
Das ist meine Frage,
Warum Option 1 zeigt die korrekte id
aber der flag
Wert falsch ist? Ist es, weil MAX
nur die aktuelle id
aktualisieren, aber nicht die Flagge?
- Entschuldigung, wenn die SQL-Abfrage zu unordentlich und schwer zu lesen ist, weil ich nicht weiß, wie man die Syntax hervorhebt. -
Dies ist die Erklärung, die ich suche! Vielen Dank für die Hervorhebung. – WeeHong