Postgresql での MySQL FIELD() のシミュレーション
MySQL から PostgreSQL への変換では、予期せぬ課題が発生する可能性があります。このような問題の 1 つは、Postgresql では直接サポートされていない ORDER BY FIELD() 機能のシミュレーションです。
MySQL では、FIELD() 関数は、指定されたリスト内の値に序数の位置を割り当て、次の基準に基づいて結果を並べ替えます。これらの立場。たとえば、MySQL の次のクエリ:
SELECT * FROM `currency_codes` ORDER BY FIELD(code, 'GBP', 'EUR', 'BBD', 'AUD', 'CAD', 'USD') DESC, name ASC
は、FIELD() リストで指定された順序に基づいて、名前のアルファベット順に、currency_codes テーブルを並べ替えます。
で同様の動作を実現するには、 Postgresql では、ORDER BY 内で CASE ステートメントを使用できます。句:
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;
このクエリでは、CASE ステートメントは、指定された順序でコードに優先順位の値 (1 ~ 6) を割り当てます。リスト内に見つからない値には、デフォルトの優先順位 7 が割り当てられます。結果は、優先順位の降順と名前の昇順で並べ替えられます。
以上がPostgreSQL で MySQL の FIELD() 関数をシミュレートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。