ホームページ > データベース > mysql チュートリアル > IN() と FIELD() を使用してカスタム シーケンスで MySQL クエリ結果を並べ替えるにはどうすればよいですか?

IN() と FIELD() を使用してカスタム シーケンスで MySQL クエリ結果を並べ替えるにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-22 05:32:17
オリジナル
609 人が閲覧しました

How Can I Order MySQL Query Results by a Custom Sequence Using IN() and FIELD()?

IN() によるカスタム ソートに FIELD() を使用した MySQL クエリの最適化

MySQL データベースからデータを取得する場合、多くの場合、結果を特定の順序で並べ替える必要があります。順序。 IN() メソッドを使用すると、定義済みの値のリストに基づいてレコードを取得できますが、結果セット内の IN() 句の値の順序を維持する必要がある場合に問題が発生します。

問題:

順序付けられた ID 番号を含む PHP 配列があり、IN() メソッドを使用して MySQL から対応するレコードをフェッチしたいとします。 テーブル。ただし、これらのレコードは IN() 句で指定されているのと同じ順序で返される必要があります。

解決策:

これを解決できる強力な関数チャレンジはFIELD()です。これは主に文字列関数として知られていますが、数値データでも効果的に機能します。 FIELD() を使用すると、IN() 句で値の順序を指定でき、MySQL はそれに応じて結果を配置します。

例:

順序付けられた ID 番号を持つ次の PHP 配列を考えてみましょう。

$ids = [4, 7, 3, 8, 9];
ログイン後にコピー

記事という名前のテーブルから対応するレコードを取得します。 ID の順序を確認するには、次の MySQL クエリを使用できます。

SELECT * FROM articles
ORDER BY FIELD(id, 3, 2, 5, 7, 8, 1);
ログイン後にコピー

このクエリでは、FIELD() 関数を使用して、2 番目のパラメータの値の順序に基づいて結果を並べ替えます。 IN() 句で指定された順序は [4, 7, 3, 8, 9] ですが、結果は 3, 2, 5, 7, 8, 1 として返されることが必要です。したがって、次の値を提供します。 FIELD() の 2 番目のパラメータとしてその順序で指定します。これにより、記事が希望の順序で返されることが保証されます。

以上がIN() と FIELD() を使用してカスタム シーケンスで MySQL クエリ結果を並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート