今天查看sql語句,發現mysql中field不能按指定id排序了,網上搜索了一下資料並沒有人跟我遇到同樣的情況。仔細查看sql代碼發現order by 排序後面還有條件篩選。例如下面的例子: test表,我想按照7,8,6的id順序排序。
按照field的語法,寫了SQL語句:
select * from test order by field(id,7,8,6) and reg_time >= '2016-01-01'
可是發現打印出的結果並不是我想要的:
於是仔細看上面的SQL語句 ,field後面還有一個條件語句,所以知道原因了,就是這條件語句使結果產生不一樣的效果,但是這條sql是符合相關語法要求的,於是我們在做排序的時候需要把order by放到條件語句之後,這是日常生活中需要注意的細節。調整以後sql語句如下:
select * from test where reg_time >= '2016-01-01' order by field(id,7,8,6)
就可以查看到我們想要的結果了: