Wie wählt GROUP BY DESC seine Reihenfolge aus?
So erstelle ich Abschnitte für ein Geschäft. Der Shop kann mehrere Bereiche haben, wenn kein @ vorhanden issection_identifier
set für ein gegebenesstore_id
es sollte auf den globalen Speicher zurückgreifen, der @ i0
.
Der gewünschte SQL-Befehl sollte eine Liste von @ zurückgebesection_options
für ein bestimmtes Geschäft.
Beispiel meiner Tabelle:
SELECT * FROM my_table:
+----+--------------------+----------------------+----------+
| id | section_identifier | option_identifier | store_id |
+----+--------------------+----------------------+----------+
| 17 | header | header_option_one | 1 |
| 18 | footer | footer_option_one | 0 |
| 19 | homepage_feature | homepage_feature_one | 0 |
| 23 | header | header_option_three | 0 |
| 25 | homepage_feature | homepage_feature_one | 1 |
+----+--------------------+----------------------+----------+
Sosection_identifier
ist eindeutig, die IDs, die ich für Geschäft 1 benötige, wären 17, 18 und 25.
Wenn ich laufe:
SELECT * FROM my_table GROUP BY section_identifier
es gibt zurück:
+----+--------------------+----------------------+----------+
| id | section_identifier | option_identifier | store_id |
+----+--------------------+----------------------+----------+
| 18 | footer | footer_option_one | 0 |
| 23 | header | header_option_three | 0 |
| 19 | homepage_feature | homepage_feature_one | 0 |
+----+--------------------+----------------------+----------+
Dies bedeutet, wenn ich @ laufSELECT * FROM my_table GROUP BY section_identifier DESC
:
Ich erhalte die Antwort (dies ist meine gewünschte Ausgabe):
+----+--------------------+----------------------+----------+
| id | section_identifier | option_identifier | store_id |
+----+--------------------+----------------------+----------+
| 25 | homepage_feature | homepage_feature_one | 1 |
| 17 | header | header_option_one | 1 |
| 18 | footer | footer_option_one | 0 |
+----+--------------------+----------------------+----------+
Obwohl dies funktioniert, habe ich kein Verständnis dafür, warum.
Ist mein Verständnis der AnfangsGROUP BY
sollte die erste Instanz in der Datenbank erhalten, IE sollte die erwartete Antwort lauten:
+----+--------------------+----------------------+----------+
| id | section_identifier | option_identifier | store_id |
+----+--------------------+----------------------+----------+
| 18 | footer | footer_option_one | 0 |
| 17 | header | header_option_three | 1 |
| 19 | homepage_feature | homepage_feature_one | 0 |
+----+--------------------+----------------------+----------+
Allerdings scheint es meine @ zu verweisstore_id
irgendwie? Ich habe ein paar verschiedene Kombinationen ausprobiert und bekomme jedes Mal seltsamerweise mein erwartetes Ergebnis, aber ich habe kein Verständnis dafür, warum.
Kann mir das bitte jemand erklären?
PS
Ich habe versucht, das @ zu aktualisiereoption_identifier
vonid = 7
um zu sehen, ob MySql auf das zuletzt auf der Festplatte gespeicherte verweist und das Ergebnis nicht verändert hat.
Ebenfall: Ich habe nicht vor, diese Funktion zu verwenden oder nach einer Alternative zu fragen. Ich frage, was damit los ist.