¿Cómo selecciona GROUP BY DESC su orden?

Entonces estoy creando secciones para una tienda. La tienda puede tener varios ámbitos, si no hay unsection_identifier establecido para un determinadostore_id debería recurrir a la tienda global que es0.

El comando SQL que quiero debería devolver una lista desection_options para cualquier tienda relacionada.

Ejemplo de mi mesa:

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 |
+----+--------------------+----------------------+----------+

Entoncessection_identifier es único, los ID que necesito para la tienda 1 serían 17, 18 y 25.

Cuando corro:

SELECT * FROM my_table GROUP BY section_identifier vuelve:

+----+--------------------+----------------------+----------+
| 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 |
+----+--------------------+----------------------+----------+

Esto significa que si corroSELECT * FROM my_table GROUP BY section_identifier DESC:

Recibo la respuesta (esta es mi salida deseada):

+----+--------------------+----------------------+----------+
| 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 |
+----+--------------------+----------------------+----------+

Aunque esto funciona, no entiendo por qué.

Es mi comprensión la inicialGROUP BY debería obtener la primera instancia en la base de datos, es decir, la respuesta que espero debería ser:

+----+--------------------+----------------------+----------+
| 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 |
+----+--------------------+----------------------+----------+

Sin embargo, parece estar haciendo referencia a mistore_id ¿de alguna manera? He intentado algunas combinaciones diferentes y extraño cada vez que obtengo el resultado esperado, pero no entiendo por qué.

¿Alguien puede explicarme esto por favor?

PD

He intentado actualizar eloption_identifier deid = 7 para ver si MySql hace referencia al último guardado en el disco y no cambió el resultado.

también: No planeo usar esta función o pedir una alternativa, estoy preguntando qué está pasando con ella.

Respuestas a la pregunta(2)

Su respuesta a la pregunta