-1

特定の順序で保持する必要があるIDのセットをフィルタリングする必要があります。問題は、フィルター(この場合はshops.sector)が一部のレコードを除外すると、ORDERBYFIELD構文が無効になることです。エラーメッセージは次のとおりです。「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;

フィルタリングされた結果を最初に知らずに順序を維持する方法はありますか?可能であれば、これを1つのクエリだけに保持したいと思います。

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

同じ名前の列を持つテーブルが2つ以上あります。companies.idまたはのように、注文するIDを指定する必要がありますshops.id

于 2012-10-30T16:11:02.167 に答える