ホームページ >データベース >mysql チュートリアル >MySQL の値のリストで「NOT IN」を正しく使用する方法は?

MySQL の値のリストで「NOT IN」を正しく使用する方法は?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-03 12:23:39750ブラウズ

How to Correctly Use

MySQL の「NOT IN」値リストの適切な形式

テーブル変数にカンマ区切りの値リストを設定し、それを変数として使用しようとする場合「NOT IN」フィルターを使用すると、一般的な障害が発生します。この操作の正しい構文と制限事項を理解することが重要です。

問題

元のクエリで示されているように、変数をカンマ区切りの値のリストに設定します。

SET @idcamposexcluidos='817,803,495';

その後、それを「WHERE NOT IN」で使用しようとしました条件:

WHERE id_campo not in (@idcamposexcluidos)

多くの場合、エラーや意図しない結果が発生します。

解決策

問題の核心は、IN 句が個別の値を期待していることにあります。ただし、カンマ区切りの文字列をパラメータとして使用すると、事実上、IN 句内の単一の文字列にコンパイルされ、誤った比較が発生します。

これを克服するには、動的 SQL を使用するか、MySQL の FIND_IN_SET() 関数を使用する必要があります。 :

SET @idcamposexcluidos='817,803,495';
...
WHERE FIND_IN_SET(id_campo, @idcamposexcluidos) = 0

FIND_IN_SET() は回避策を提供しますが、制限もあります。インデックスを使用する場合とは異なり、値のリストに対する線形検索が必要になるため、パフォーマンスが低下します。

以上がMySQL の値のリストで「NOT IN」を正しく使用する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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