MySQL WHERE IN () が複数の ID 一致を返さない
MySQL では、WHERE IN () 句を使用して、次の条件に基づいて結果をフィルタリングします。指定された値のリスト。ただし、テーブルの列に複数の値が含まれている場合、指定された値のすべてに一致する行が返されるわけではありません。
次のクエリを考えてみましょう。
SELECT * FROM table WHERE id IN (1, 2, 3, 4);
このクエリは、 id 列は 1、2、3、または 4 に等しい。ただし、行にこれらの値が複数含まれる場合、その値は返されない可能性があります。
理由を理解するには、IN が次のことに注意することが重要です。句は論理 OR 条件に変換されます:
SELECT * FROM table WHERE id='1' OR id='2' OR id='3' OR id='4';
これは、指定された値の 1 つに正確に一致する行のみが返されることを意味します。
SET データ型と FIND_IN_SET を使用した解決策
この問題を解決する 1 つの方法は、id 列のデータ型を SET データ型に変更することです。 SET 列には、複数の値をカンマ区切りのリストとして保存できます。
データ型を SET に変更したら、FIND_IN_SET 関数を使用して、特定の値に基づいて行を取得できます。
SELECT * FROM table WHERE FIND_IN_SET('1', id);
このクエリは、他の値が含まれているかどうかに関係なく、id 列に値 1 が含まれるすべての行を返します。
以上がSET データ型を使用すると、MySQL WHERE IN () が複数の ID 一致を返さないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。