使用ORDER BY按值排序?

时间:2010-04-05 15:58:34

标签: php sql mysql

为了澄清,您是否能够以这种方式使用MySQL进行排序?

ORDER BY CompanyID = XXX DESC

我想要做的是使用一个SQL查询来排序X = Y的所有内容,在这种情况下,CompanyID = XXX。 CompanyID不是XXX的所有值都应该在CompanyID = XXX的所有结果之后。

我不想限制我的查询,但我确实想要将某个公司排在其他列表之上。

5 个答案:

答案 0 :(得分:10)

ORDER BY FIELD(CompanyID, 'google', 'apple', 'microsoft') ASC

Google =第一个 微软=第三个 其余=最后

答案 1 :(得分:8)

您可以按顺序使用案例,例如:

order by case when CompanyID = XXX then 1 else 2 end

答案 2 :(得分:6)

您的查询没问题。 CompanyID = xxx在匹配时产生1,否则为0。只需将CompanyID列添加为辅助订单列。

ORDER BY CompanyID = XXX DESC, CompanyID ASC

通过这种方式,您可以获得CompanyID首先与常量匹配的记录,然后其余部分按顺序排列。

或者,你可以这样做:

ORDER BY CompanyID <> XXX ASC, CompanyID ASC

答案 3 :(得分:2)

你可能会把它伪装成

SELECT CompanyID, IF(CompanyID = XXX, -1, CompanyID) AS sortby
FROM companies
ORDER BY sortby DESC

答案 4 :(得分:2)

您可能希望尝试在表达式中使用CASE语句。当公司ID与您的首选公司匹配时,返回0,否则返回1.然后按照公司名称按照常规顺序在二级订单中按列排序。

 order by case when CompanyID = XXX then 0 else 1 end, CompanyName

通过这种方式,您可以将您的首选公司置于顶部,然后根据名称按字母顺序排列所有其他公司(或者您希望订购它)。