-1

我必须过滤一组我需要保持特定顺序的 id。问题是,当过滤器(在本例中是 shop.sector)排除一些记录时,ORDER BY FIELD 语法变得无效。错误消息是:“order 子句中的列 'id' 不明确”</p>

这是完整的查询:

SELECT DISTINCT `companies`.id FROM `companies` 
LEFT OUTER JOIN `shops` ON shops.company_id = companies.id 
WHERE (companies.id IN (96296,1,53585) AND shops.sector = 'Mobile') 
ORDER BY FIELD(id, 96296,1,53585) LIMIT 0, 30;

有没有办法在不知道过滤结果的情况下保持订单?如果可能的话,我想将其保留在一个查询中。

4

2 回答 2

0

尝试使用

ORDER BY FIELD(companies.id, 96296,1,53585)

或者

ORDER BY 
    CASE 
        WHEN companies.id = 96296 THEN 1 
        WHEN companies.id = 1 THEN 2
        ELSE 3
    END
于 2012-10-30T16:10:36.270 回答
0

您有两个或多个表具有相同名称的列。您必须指定您订购的 ID,例如companies.idshops.id

于 2012-10-30T16:11:02.167 回答