为了澄清,您是否能够以这种方式使用MySQL进行排序?
ORDER BY CompanyID = XXX DESC
我想要做的是使用一个SQL查询来排序X = Y的所有内容,在这种情况下,CompanyID = XXX。 CompanyID不是XXX的所有值都应该在CompanyID = XXX的所有结果之后。
我不想限制我的查询,但我确实想要将某个公司排在其他列表之上。
答案 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
通过这种方式,您可以将您的首选公司置于顶部,然后根据名称按字母顺序排列所有其他公司(或者您希望订购它)。