0

重複の可能性:
SQL IN()句の値の順序による順序付け

データベース内のプロパティを郵便番号で取得する簡単なクエリステートメントがあります。IN()ステートメントを使用して複数の郵便番号を渡します。これらの郵便番号が正しい場合(ターゲットの郵便番号からますます離れている場合)、郵便番号がIN()ステートメントに渡される順序で結果を並べ替えることはできますか?

たとえば、郵便番号が77808、77805、77806、77807であるとします。次のようにクエリに渡します。

$query = "SELECT * FROM Properties WHERE zip_code IN('77808', '77805', '77806', '77807',)";

最初に77808、次に77805、次に77806などの郵便番号を持つプロパティで結果を並べ替えることはできますか?または、PHP(この場合)を使用してデータベースから取り出した後に注文する必要がありますか?

4

2 に答える 2

2

Mysqlを使用する場合は、FIELD関数を使用できます。

SELECT * FROM Properties 
WHERE zip_code IN('77808', '77805', '77806', '77807')
ORDER BY FIELD(zip_code, '77808', '77805', '77806', '77807')
于 2012-06-07T04:09:21.223 に答える
0
SELECT * FROM (
   SELECT 1 as my_order, p.* FROM Properties p WHERE zip_code = '77808'
   UNION ALL
   SELECT 2 as my_order, p.* FROM Properties p WHERE zip_code = '77805'
   UNION ALL 
   SELECT 3 as my_order, p.* FROM Properties p WHERE zip_code = '77806'
   UNION ALL
   SELECT 4 as my_order, p.* FROM Properties p WHERE zip_code = '77807'
) temp_table
ORDER BY my_order ASC
于 2012-06-07T04:10:23.933 に答える