Mysql order by字段给出的顺序不正确

Mysql order by字段给出的顺序不正确,mysql,Mysql,提供者id可以是1,2,3 SELECT * FROM `news` order by field (provider_id, 1,3) 我希望它先显示provider_id=1的记录,然后显示3,然后显示provider_id=2的记录 在实际中,它首先显示提供程序_id=2的所有记录,然后才显示1、3 当我只想首先列出1和3,然后列出其余的提供者id时,如何编写正确的查询?为什么会这样 字段返回列表中与第一个参数的值匹配的索引,如果未找到该索引,则返回0,因此您的排序依据显然将使用提供者i

提供者id可以是1,2,3

SELECT * FROM `news` order by field (provider_id, 1,3)
我希望它先显示provider_id=1的记录,然后显示3,然后显示provider_id=2的记录

在实际中,它首先显示提供程序_id=2的所有记录,然后才显示1、3


当我只想首先列出1和3,然后列出其余的提供者id时,如何编写正确的查询?

为什么会这样

字段
返回列表中与第一个参数的值匹配的索引,如果未找到该索引,则返回0,因此您的
排序依据
显然将使用
提供者id
对行进行排序,而不是先排序1或3

要测试它,只需尝试添加一个值为
字段(provider\u id,1,3)
的列,您将看到:

SELECT *,field (provider_id, 1,3) FROM `news` order by field (provider_id, 1,3)
您可以简单地添加
DESC
(如果您希望先使用provider_id=1,则可以交换1和3):

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