我必须过滤一组我需要按特定顺序保存的ID。问题是,当过滤器(在本例中为 shops.sector )排除某些记录时,ORDER BY FIELD语法将失效。错误消息是:“order order子句中的列'id'是不明确的”
以下是完整的查询:
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;
有没有办法在不知道过滤结果的情况下保留订单?如果可能的话,我想在一个查询中保留它。
答案 0 :(得分: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
答案 1 :(得分:0)
您有两个或更多表,其中一列具有相同的名称。
您必须指定排序的ID,例如companies.id
或shops.id