2010-08-10 67 views
7

比方说,我有这样的MySQL查询:订单按字段等于特定值?

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

我怎样才能行的优先级,以便在那里x='abc'是有序的第一批案件?如果y=0但是x!='abc',我希望那些行在x='abc'之后出现。

这可以用一个简单的ORDER BY子句来完成吗?

谢谢!

回答

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

我会用一个case语句做到这一点:

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)