ホームページ > データベース > mysql チュートリアル > MySQL の「NOT IN」演算子で変数を適切に使用する方法は?

MySQL の「NOT IN」演算子で変数を適切に使用する方法は?

Linda Hamilton
リリース: 2025-01-01 14:07:11
オリジナル
963 人が閲覧しました

How to Properly Use a Variable with MySQL's

MySQL で「NOT IN」リストの変数を設定する方法

MySQL クエリを使用する場合、特定の値を除外する必要がある状況がよく発生します。 「NOT IN」演算子を使用して結果セットから取得します。これを実現するには、除外された値のリストを保持する変数を設定します。ただし、クエリを正常に実行するには、変数を正しい形式で定義することが重要です。

次のクエリについて考えてみます。

SET @idcamposexcluidos='817,803,495';
WHERE id_campo not in (@idcamposexcluidos)
ログイン後にコピー

上記のクエリは、@idcamposexcluidos という変数を次のように設定しようとします。値のリストを作成し、その変数を「NOT IN」句で使用します。ただし、変数が適切な形式で定義されていない場合、エラーまたは不正確な結果が発生する可能性があります。

「NOT IN」演算子にはかっこ内の個別の値のリストが必要ですが、変数 @idcamposexcluidos にはカンマが含まれています。 - で区切られた文字列。この不一致により、クエリのコンパイルと実行が正しく行われなくなります。

この問題を解決するには、主に次の 2 つのアプローチがあります。

1.ダイナミック SQL:

ダイナミック SQL を使用すると、除外された値のリストを含むクエリ文字列を実行時に動的に構築できます。このアプローチにより、クエリが適切にフォーマットされて実行されることが保証されます。

SET @sql = CONCAT('WHERE id_campo not in (', @idcamposexcluidos, ')');
PREPARE stmt FROM @sql;
EXECUTE stmt;
ログイン後にコピー

2. FIND_IN_SET 関数:

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 サイトの他の関連記事を参照してください。

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