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.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage