2017-03-10 32 views
-1

PROVIDER_ID可能是1,2,3mysql命令由域給出了不正確的順序

SELECT * FROM `news` order by field (provider_id, 1,3) 

我希望它顯示第一條記錄與PROVIDER_ID = 1,則3和之後他們與PROVIDER_ID = 2

在現實就說明首先記錄與PROVIDER_ID = 2,只有1,3

如何編寫正確的查詢時,我想首先清單僅1和3。後來所有的休息PROVIDER_ID的?

回答

2

爲什麼你會想到什麼?

FIELD返回的第一個參數的值相匹配的列表中的索引,而0,如果它沒有找到,所以你ORDER BYprovider_id不是1或3第一顯然對行進行排序。

爲了測試它,只是試着加入與field (provider_id, 1,3)值一列,你會看到自己:

SELECT *,field (provider_id, 1,3) FROM `news` order by field (provider_id, 1,3) 

你可以簡單地添加DESC(以及可能的,如果你想換1和3 PROVIDER_ID = 1第一):

SELECT * FROM `news` order by field (provider_id, 3, 1) DESC