2010-08-10 10 views
7

Disons que j'ai cette requête MySQL:Ordre Par un champ étant égal à une valeur spécifique?

SELECT * FROM A WHERE x='abc' OR y=0; 

Comment puis-je hiérarchiser les lignes afin que les cas où x='abc' sont commandés PREMIER? Si y=0 mais x!='abc', je veux que ces lignes viennent après les cas où x='abc'. Est-ce possible avec une simple clause ORDER BY?

Merci!

Répondre

7
SELECT * 
FROM A 
WHERE x='abc' 
    OR y=0 
order by case when x='abc' then 0 else 1 end; 
0

je le ferais avec une déclaration de cas:

SELECT *, 
    CASE WHEN column_one = 0 THEN 0 
     WHEN column_two = 'ADMIN' THEN 1 
    END AS multi_column 
FROM sometable 
ORDER BY multi_column; 
0

ORDER BY FIELD(x,'abc',x)

Questions connexes