J'espère trier les éléments retournés dans la requête suivante par l'ordre dans lequel ils sont entrés dans la fonction IN () .
CONTRIBUTION:
SELECT id, name FROM mytable WHERE name IN ('B', 'A', 'D', 'E', 'C');
PRODUCTION:
| id | name |
^--------^---------^
| 5 | B |
| 6 | B |
| 1 | D |
| 15 | E |
| 17 | E |
| 9 | C |
| 18 | C |
Des idées?
FIELD(letter, 'A', 'C')
figurant pas dans la liste) prévaudra sur les valeurs connues, c'est-à-dire que la liste retournera d'abord les entrées avec la lettre B en premier (en supposant un ensemble d'enregistrements avec desA | B | C
valeurs). Pour éviter cela, inversez la liste et utilisez DESC, ieFIELD(letter, 'C', 'A') DESC
.Une autre option d'ici: http://dev.mysql.com/doc/refman/5.0/en/sorting-rows.html
Donc, dans votre cas (non testé) serait
En fonction de ce que vous faites, je l'ai trouvé un peu bizarre mais je l'ai toujours fait fonctionner après avoir joué un peu avec.
la source
Essayez quelque chose comme
la source
Peut-être que cela peut aider quelqu'un (p_CustomerId est passé dans SP):
Description: je souhaite afficher la liste des comptes. Ici, je passe un identifiant client dans sp. Maintenant, il répertorie les noms de compte avec des comptes liés à ces clients sont affichés en haut, suivis des autres comptes par ordre alphabétique.
la source
Vous avez besoin d'une autre colonne (numérique) dans votre tableau, dans laquelle vous spécifiez l'ordre de tri. La clause IN ne fonctionne pas de cette façon.
la source
juste utiliser
éviter la situation comme
se terminera par une ligne de résultat non ordonnée: 1 et 11 alternant
la source