Mysql

mysql - 按where子句中的第一個條件排序

  • August 26, 2018

我有一個表包含以下欄位

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運營商資訊在這裡

引用自:https://dba.stackexchange.com/questions/96446