ホームページ >データベース >mysql チュートリアル >MySQL の WHERE IN クエリで複数の一致する値を持つ行が見つからないのはなぜですか?

MySQL の WHERE IN クエリで複数の一致する値を持つ行が見つからないのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-05 20:29:02489ブラウズ

Why Does My MySQL WHERE IN Query Miss Rows with Multiple Matching Values?

複数の一致する値を求める MySQL WHERE IN クエリ

一致する WHERE IN () 句を使用して MySQL テーブルからデータを取得しようとする場合複数の値を使用すると、複数の一致する値を持つ行が返されないという問題が発生する可能性があります。指定された値のいずれかを含むすべての行が返されると予想されるため、この動作は混乱を招く可能性があります。

説明

WHERE IN () 句は次の目的で使用されます。指定された列の値が括弧内に指定された値のいずれかに一致するかどうかに基づいて行を選択します。ただし、行に複数の一致する値 (1 と 3 の両方など) がある場合、クエリは一連の OR 条件に変換されます。

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

これは、指定された値の 1 つに正確に一致する行のみが、

解決策

この問題に対処するには、次の方法を検討できます。

方法 1: SET データ型を使用する

id 列のデータ型を SET に変更すると、複数の値を 1 行に格納できます。次に、FIND_IN_SET() 関数を使用して、特定の値を含む行をクエリできます。

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

このクエリは、他の値の存在に関係なく、id 列に値 '1' が含まれるすべての行を返します。

方法 2: UNION またはサブクエリを使用する

別のアプローチは、UNION またはサブクエリを使用して、指定された値のいずれかと一致する複数のクエリを結合することです。

<code class="sql">SELECT * FROM table WHERE id = 1
UNION
SELECT * FROM table WHERE id = 3;</code>

このクエリは、他の値の存在に関係なく、1 または 3 のいずれかに一致するすべての行を返します。

以上がMySQL の WHERE IN クエリで複数の一致する値を持つ行が見つからないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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