J'essaie d'obtenir une liste ordonnée de lignes de ma table de base de données MySQL en fonction d'une valeur entière "Place".
name place ---- ----- John 1 Do 2 Pete 2 Eric 0
3 Réponses :
order by case when place = 0 then 1 else 0 end asc, place asc that way you get all the non-zeroes ordered first.
Jamais vu la construction de cas auparavant (mais alors, j'ai obtenu mes cours SQL au début des années quatre-vingt-dix). En raison de la simplicité, je préfère le @True doux.
ORDER BY CASE place WHEN 0 THEN 0 ELSE -1 END, place
Merci, les trucs de 9999 étaient quelque chose que j'ai pensé à moi-même, je ne savais tout simplement pas que vous pourriez modifier les critères de tri évalués de l'ordre. Si une liste de commandes en double aurait une pénalité de performance élevée, ce serait mon premier choix suivant.
SELECT * FROM myTable ORDER BY place>0 DESC, place is a solution without CASE
J'aime cette solution comme il est petit et semble bien. À moins que ce soit moins efficace, je garde cela accepté.
ou juste commander par lieu = 0, place code>