自定义排序方式" %%"在mysql中

时间:2017-11-15 02:46:31

标签: mysql sql sorting sql-order-by

我有一张这样的表:

|city_name|
 Shadyside
 Chalkyitsik
 Wyalusing
 Quartzsite
 Seaside
 Shawnee Mission
 Siberia
 Sibley
 Nicasio
 Lacassine
 Sicily Island
 Andalusia
 Sidell
 Sidney
 ...
 ..
 .

使用以下查询进行选择:

SELECT city_name FROM my_table WHERE city_name LIKE '%si%'

而不是'%si%'可以放任何东西。

我想按照首先使用' si'。

开头的词排序

输出如下:

|city_name|
 Siberia
 Sibley
 Sicily Island
 Sidell
 Sidney
 ... And the rest of the words that are '%si%'

如何进行排序(ORDER BY)?

2 个答案:

答案 0 :(得分:3)

您也可以在order by和表达式中使用多个键:

SELECT city_name
FROM my_table
WHERE city_name LIKE '%si%'
ORDER BY (city_name LIKE 'si%') DESC, city_name;

MySQL将布尔表达式视为数字上下文中的数字,使用" 0"为假和" 1"真的。 DESC首先放置匹配(1 = true)。

答案 1 :(得分:2)

SELECT city_name
FROM my_table
WHERE city_name LIKE '%si%'
ORDER BY (city_name LIKE 'si%') DESC;