3

基本上我有一个可以包含一些前缀字符串的字段:

word1
bla2
ttt3
word4 
[...]

我需要先订购 SQL,ttt3然后再订购所有其他字符串。
我试过这个没有运气

ORDER BY FIELD (myField,'ttt3',*)

有什么建议么?

4

2 回答 2

6

使用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
于 2012-04-27T11:30:37.730 回答
2
ORDER BY myField = 'ttt3' DESC

或更通用且独立于供应商:

ORDER BY CASE WHEN myField = 'ttt3' THEN 0 ELSE 1 END
于 2012-04-27T11:30:27.690 回答