我刚注意到, 当我执行以下查询时:
SELECT * FROM tbl WHERE some_key = 1 AND some_foreign_key IN (2,5,23,8,9);
结果以与IN语句列表中给出的顺序相同的顺序返回, 例如 some_foreign_key = 2的行是返回的第一行, 一个人 some_foreign_key = 9是最后一个,依此类推。
这正是这个人描述的相反行为:
可以依赖此行为或通过某些mySQL Server设置进行修改吗?
我知道普遍的智慧是“没有ORDER BY子句”==“RDBMS可以排序,但它喜欢”, 但在我目前的任务中,这种行为非常有用(非常大的导入) 如果我能依靠它,那就太好了。
编辑:我已经了解了 ORDER BY FIELD 技巧,只是想知道我是否可以通过在某处设置一些配置来安全地避免ORDER BY子句。答案 0 :(得分:0)
ORDER BY FIELD(some_foreign_key,2,5,23,8,9)
实现起来并不是那么难 - 除非你真的简化了这个例子。正如您已经知道的那样,这是唯一可以100%确定输出排序的方法。