ホームページ >データベース >mysql チュートリアル >MySQL の WHERE IN () クエリが複数の値を持つレコードを返さないのはなぜですか?

MySQL の WHERE IN () クエリが複数の値を持つレコードを返さないのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-04 17:54:02457ブラウズ

Why Doesn't My MySQL WHERE IN () Query Return Records with Multiple Values?

MySQL WHERE IN () クエリが予期した結果を返さない

MySQL では、通常、WHERE IN () ステートメントは、レコード ベースの取得に使用されます。指定された値のセットに基づいて。ただし、予期した行が結果に返されない状況にユーザーが遭遇することがあります。

問題の説明:

ユーザーが「テーブル」からすべての行を選択するクエリを持っています。 " 指定されたリストに "id" 列が含まれるテーブル:

<code class="sql">SELECT * FROM table WHERE id IN (1,2,3,4);</code>

ユーザーは、レコードに複数の "id" 値 (例: 1 と 3 の両方) がある場合、その値が返されないことに注意しました。

問題の理解:

WHERE IN () ステートメントは、指定された値のリストを一連の OR 演算子に変換します:

<code class="sql">SELECT * FROM table WHERE id='1' or id='2' or id='3' or id='4';</code>

これは、「id」列が指定された値の 1 つに正確に一致する行のみが返されることを意味します。

解決策 1: FIND_IN_SET を使用する

Oneこの制限を克服するアプローチは、「id」列のデータ型を SET に変更してデータ構造を変更することです。これにより、列に複数の値を格納できるようになります。

FIND_IN_SET 関数を使用すると、SET 内に特定の値が存在するレコードを検索できます。

<code class="sql">SELECT * FROM table WHERE FIND_IN_SET('1', id);</code>

ただし、次のことが重要です。このソリューションはさらに複雑になるため、すべてのシナリオに適しているわけではないことに注意してください。

以上がMySQL の WHERE IN () クエリが複数の値を持つレコードを返さないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。