您的第一个例子对我来说差不多了。
SELECT * FROM foo ORDER BY id IN (1,2,3) DESC, created_date ASC
添加DESC
是因为id IN (1,2,3)
返回1
true或0
false。1 > 0
,因此按降序对其进行排序可得到理想的结果。
添加ASC
是因为我喜欢明确。
根据后面的示例,我认为您缺少的是尽管它包含空格,但是它field IN (list)
是返回0
或的单个运算符1
。IF(id IN (1,2,3), 0, 1)
本质上是多余的。
因此,您不需要手动使用aUNION
或 sort,因为MysqL使此操作比您甚至意识到的还简单:)