Mysql
mysql - 按where子句中的第一個條件排序
我有一個表包含以下欄位
id, name
具有以下值
1, ciro 2, test ciro 3, ciprox 4, other 5, other
我想獲取所有以“ci”開頭或包含“ci”的值,但在它們以 ci 開頭之前向我展示結果,然後是其餘的。
查詢
select * FROM table WHERE name like 'ci%' or name like '%ci%' order by name;
我回來了
1, ciro 2, test ciro 3, ciprox
我想要
1, ciro 3, ciprox 2, test ciro
因此,在名稱以“ci”開頭的行之前,然後是那些包含
有沒有辦法不使用兩個查詢來獲得結果?
這是一個相當普遍的問題!
case
表達式在這裡有所幫助。類似的查詢(未經測試)select * from table where name like '%ci%' order by case when name like 'ci%' then 0 else 1 end, name;
應該做你想做的。
您應該使用
ORDER BY CASE
適合您特定目的的方式對項目進行排序。更多
CASE
運營商資訊在這裡