2010-08-10 7 views
7

Digamos que tengo esta consulta MySQL:Orden por un campo que es igual a un valor específico?

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

¿Cómo puedo priorizar las filas de manera que los casos en que x='abc' están clasificadas PRIMERO? Si y=0 pero x!='abc', quiero que esas filas aparezcan después de los casos donde x='abc'.

¿Se puede lograr esto con una simple cláusula ORDER BY?

Gracias!

Respuesta

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

lo haría con una declaración de caso:

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)

Cuestiones relacionadas