SELECT * FROM 用户表
ORDER BY
CASE
WHEN 名字 LIKE '%狮%' THEN 1
WHEN 名字 LIKE '%将%' THEN 2
WHEN 名字 LIKE '%鄢%' THEN 3
WHEN 名字 LIKE '%金%' THEN 4
WHEN 名字 LIKE '%香%' THEN 5
WHEN 名字 LIKE '%道%' THEN 6
WHEN 名字 LIKE '%泉%' THEN 7
WHEN 名字 LIKE '%吉%' THEN 8
WHEN 名字 LIKE '%玉%' THEN 9
WHEN 名字 LIKE '%军%' THEN 10
WHEN 名字 LIKE '%光%' THEN 11
WHEN 名字 LIKE '%鄂%' THEN 12
WHEN 名字 LIKE '%孝%' THEN 13
WHEN 名字 LIKE '%木%' THEN 14
WHEN 名字 LIKE '%夏%' THEN 15
WHEN 名字 LIKE '%凤%' THEN 16
WHEN 名字 LIKE '%磁%' THEN 17
WHEN 名字 LIKE '%都%' THEN 18
ELSE 19
END;
只不过这种写法性能可能不太好,可以考虑先查结果,然后在程序里返回前排序
SELECT *
FROM users
ORDER BY
CASE
WHEN name LIKE '%狮%' THEN 1
WHEN name LIKE '%将%' THEN 1
WHEN name LIKE '%鄢%' THEN 1
WHEN name LIKE '%金%' THEN 1
WHEN name LIKE '%香%' THEN 1
WHEN name LIKE '%道%' THEN 1
WHEN name LIKE '%泉%' THEN 1
WHEN name LIKE '%吉%' THEN 1
WHEN name LIKE '%玉%' THEN 1
WHEN name LIKE '%军%' THEN 1
WHEN name LIKE '%光%' THEN 1
WHEN name LIKE '%鄂%' THEN 1
WHEN name LIKE '%孝%' THEN 1
WHEN name LIKE '%木%' THEN 1
WHEN name LIKE '%夏%' THEN 1
WHEN name LIKE '%凤%' THEN 1
WHEN name LIKE '%磁%' THEN 1
WHEN name LIKE '%都%' THEN 1
ELSE 2
END,
name;