Bonjour à toutes et à tous,
Vous le savez sûrement, MySQL permet d'inclure dans la clause SELECT d'une requête des colonnes non-listées dans la clause GROUP BY.
La documentation MySQL indique bien que dans ce cas, les valeurs renvoyées pour ces colonnes sont choisies de façon non-déterministe.
Mais j'aurais besoin de savoir ce que cela signifie exactement.
Prenons l'exemple ci-dessous :
Concrètement, MySQL renvoie 1, 11, 111, 1111.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT a, b, c, d FROM ( SELECT 1 AS a, 11 AS b, 111 AS c, 1111 AS d UNION ALL SELECT 1 AS a, 22 AS b, 222 AS c, 2222 AS d UNION ALL SELECT 1 AS a, 33 AS b, 333 AS c, 3333 AS d UNION ALL SELECT 1 AS a, 44 AS b, 444 AS c, 4444 AS d UNION ALL SELECT 1 AS a, 55 AS b, 555 AS c, 5555 AS d) x GROUP BY a ;
Mais, non-déterminisme oblige, il serait tout aussi acceptable qu'il renvoie 1, 22, 222, 2222 ou bien 1, 33, 333, 3333 ou encore 1, 44, 444, 4444 ou enfin 1, 55, 555, 5555.
La question que je me pose est : pourrait-il aller jusqu'à renvoyer 1, 33, 222, 5555 ?
En d'autres termes, MySQL renverra-t-il toujours les valeurs b, c et d issues d'une même ligne (ligne choisie de façon non-déterministe) ou l'aspect non-déterministe évoqué dans la documentation signifie-t-il que les valeurs b, c et d pourraient être prises chacune sur des lignes différentes ?
Merci d'avance pour vos lumières.
Partager