基本上我有一个可以包含一些前缀字符串的字段:
word1
bla2
ttt3
word4
[...]
我需要先订购 SQL,ttt3
然后再订购所有其他字符串。
我试过这个没有运气
ORDER BY FIELD (myField,'ttt3',*)
有什么建议么?
使用ORDER BY CASE
构造。它强制为您要提取的值使用 0,对其他所有值强制使用 1,因此 0 首先排序。它就像任何列一样适合ORDER BY
列表,以逗号分隔,因此您可以在之后添加其他排序列。
ORDER BY
CASE WHEN myField = 'ttt3' THEN 0 ELSE 1 END,
myField,
other_order_col,
other_order_col2
ORDER BY myField = 'ttt3' DESC
或更通用且独立于供应商:
ORDER BY CASE WHEN myField = 'ttt3' THEN 0 ELSE 1 END