MySQL から PostgreSQL に移行する場合、開発者は PostgreSQL に ORDER BY FIELD() 関数がないことに遭遇する可能性があります。この関数は、指定された値のリストに基づいてレコードを並べ替える便利な方法を提供します。
問題ステートメント:
Rails アプリケーションは、次の順序付け句を含む SQL を利用します。
SELECT * FROM `currency_codes` ORDER BY FIELD(code, 'GBP', 'EUR', 'BBD', 'AUD', 'CAD', 'USD') DESC, name ASC
この句は、指定された通貨コードのリストに基づいてレコードを並べ替え、名前フィールドによる追加の順序付けを目的としています。ただし、PostgreSQL はこの構文をサポートしていません。
解決策:
PostgreSQL で MySQL の ORDER BY FIELD() の動作をシミュレートするには、次の構文を組み合わせて使用できます。 CASE ステートメントと ORDER BY 句。方法は次のとおりです:
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;
このアプローチでは:
このメソッドは、PostgreSQL で MySQL の ORDER BY FIELD() の動作をシミュレートする便利な方法を提供し、レコードが希望どおりにソートされることを保証します。
以上がMySQL の ORDER BY FIELD() 関数を PostgreSQL でレプリケートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。