mysql自定義排序以及優化like模糊查詢

2021-10-10 06:51:34 字數 1312 閱讀 5784

**

1. 自定義排序函式field()

**select id,username,city from sy_user order by

field

(city,

'鄭州'

,'開封'

,'平頂山'

,'洛陽'

,'商丘'

,'安陽'

,'新鄉'

,'許昌'

,'鶴壁'

,'焦作'

,'濮陽'

,'漯河'

,'三門峽'

,'周口'

,'駐馬店'

,'南陽'

,'信陽'

,'濟源'

,'省本部'

,'河南')**

2.使用 case when**

select id,username,city from

`sy_user`

order

bycase

when city like '%省%' then 1

when city like '%鄭州%' then 2

when city like '%開封%' then 3

when city like '%平頂山%' then 4

when city like '%洛陽%' then 5

when city like '%商丘%' then 6

when city like '%安陽%' then 7

when city like '%新鄉%' then 8

when city like '%鶴壁%' then 9

when city like '%焦作%' then 10

when city like '%濮陽%' then 11

when city like '%漯河%' then 12

when city like '%三門峽%' then 13

when city like '%周口%' then 14

when city like '%駐馬店%' then 15

when city like '%南陽%' then 16

when city like '%信陽%' then 17

when city like '%濟源%' then 18

endasc

網上有一些關於like %***%的優化建議,比如 locate, instr, position的方式,但是親測之後發現這幾個方式也是全表掃瞄。如果資料量龐大的話,還是建議直接使用搜尋引擎elasticsearch。

MySQL自定義排序

select from table where id in 2,3,4,1,5 order by field id,2,3,4,1,5 select from table where id in 2,3,4,1,5 order by field id,2,3,4,1,5 asc select fro...

mysql自定義排序

1 mysql自定義排序,指定排序輸出 select case when ajj whcd then 未知 when ajj whcd in 初中 中學 then 初中 when ajj whcd in 中專 中技 中專 中技 中師 技工 技校 普高 職專 職中 高中 高中?then 高中 when...

Mysql自定義排序

mysql自定義排序 最近做專案時碰到乙個排序的問題,資料庫中有乙個字段需要按照 0,1,1 的順序來查詢資料庫。無論是正序還是逆序都滿足不了要求,經過查詢,下面的方法可以滿足要求 select from user order by field status 0,1 1 order by field...