PostgreSQL での MySQL の ORDER BY FIELD() のシミュレーション
MySQL ユーザーが PostgreSQL に移行すると、ORDER BY の制限に遭遇する可能性があります。 FIELD() 構文は、後者のデータベースではサポートされていません。これにより、PostgreSQL でその動作をエミュレートする方法が疑問になります。
問題:
MySQL では、ORDER BY FIELD() 句を使用してカスタム順序を定義できます。値と一連の期待値を受け取り、クエリ結果は指定された値の順序で並べ替えられます。
例:
SELECT * FROM `currency_codes` ORDER BY FIELD(code, 'GBP', 'EUR', 'BBD', 'AUD', 'CAD', 'USD') DESC, name ASC
このクエリは、 「GBP」、「EUR」、「BBD」、「AUD」、「CAD」、「USD」をこの順序でコード化し、結果をさらに昇順に並べ替えます。 'name' 列。
解決策:
PostgreSQL では、CASE ステートメントの組み合わせと、結果の数値による順序付けを使用して、同様の機能を実現できます。
ORDER BY FIELD() の動作をシミュレートする方法は次のとおりです。句:
SELECT * FROM `currency_codes` ORDER BY CASE WHEN code='USD' THEN 1 WHEN code='CAD' THEN 2 WHEN code='AUD' THEN 3 WHEN code='BBD' THEN 4 WHEN code='EUR' THEN 5 WHEN code='GBP' THEN 6 ELSE 7 END,name;
このクエリ内:
この手法事前定義された順序に基づいて行に優先順位を付けることができ、MySQL ORDER BY FIELD() 句の機能にほぼ近いものを提供します。
以上がPostgreSQL で MySQL の ORDER BY FIELD() をシミュレートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。