Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment fonctionne la commande par clause dans mysql, la commande montre un comportement bizarre

Le problème avec cela est qu'il y a une valeur en double que vous spécifiez pour votre commande, c'est-à-dire M. ou Mme, il n'y a pas de commande de sélection garantie avec cela parce qu'ils sont tous M. ou Mme.

si vous voulez vous assurer qu'il sera toujours dans un ordre spécifique, vous devez également inclure la clé primaire en tant que deuxième ordre pour qu'elle reste la même... c'est-à-dire

ORDER BY CON_PREFIX ASC, M_ID ASC

tel qu'il est actuellement ORDER BY CON_PREFIX vous donne exactement ce qu'il devrait vous donner, les préfixes dans l'ordre croissant, il n'y a rien lié à la limite pour provoquer cela, vous n'avez tout simplement pas dit à MySQL comment vous voulez que les données vous soient renvoyées.

pour répondre à votre PERSONAL OPINION modifier dans la question ... ce que vous décrivez est déraisonnable, pensez-y de cette façon, tout ordre par défaut qui serait utilisé pour extraire des données a maintenant disparu parce que vous spécifiez un ordre par. s'il n'y avait pas de commande par sur la clause, mysql a un modèle de sélection générique, mais encore une fois, cela disparaît une fois que vous avez mis une commande par sur la requête