Je souhaite récupérer un résultat de requête ordonné, mais j'ai besoin de lignes spécifiques devant la liste. Quelque chose comme ici sur Stack Overflow, dans la liste des réponses, la bonne réponse est toujours la première.ORDER BY condition
supposais que je dois avoir les lignes avec des ID 1,2,3 à la tête, le reste trié par un champ de date, est-il possible de faire quelque chose comme:
SELECT * FROM foo ORDER BY id IN (1,2,3), created_date
Si pas ce qui est plus efficace? Il y aura beaucoup de rangées!
SELECT *, 0 AS head FROM foo WHERE id IN (1,2,3)
UNION
SELECT *, 1 AS head FROM foo WHERE id NOT IN (1,2,3)
ORDER BY head, created_date
ou
SELECT *, IF(id IN (1,2,3), 0, 1) AS head
ORDER BY head, created_date
(je l'utilise MySQL, mais je suis intéressé par toute autre solution SQL.)
Je pensais que je dois avoir un nom de domaine et seulement un nom de domaine comme un argument ORDER BY, moi endormi – sibidiba