ホームページ > データベース > mysql チュートリアル > 「NOT IN」句でカンマ区切りのリストを持つ MySQL 変数を使用するにはどうすればよいですか?

「NOT IN」句でカンマ区切りのリストを持つ MySQL 変数を使用するにはどうすればよいですか?

DDD
リリース: 2025-01-04 06:11:43
オリジナル
667 人が閲覧しました

How Can I Use a MySQL Variable with a Comma-Separated List in a

「NOT IN」クエリで除外される値リストの MySQL 変数を確立する

MySQL では、事前定義されたリストに基づいて特定の値を除外するクエリを構築できます。トリッキーになる。この質問では、除外値のカンマ区切りリストを含む変数を割り当て、それを「NOT IN」句で使用する問題について詳しく説明します。

不正な変数形式

質問で述べたように、さまざまな形式での変数の割り当ては失敗し、エラーが発生するか、値が無視されます。試行された形式は次のとおりです:

  • SET @idcamposexcluidos='(817,803,495)';
  • SET @idcamposexcluidos=817,803,495;

問題

課題は、クエリ内で「IN」句がどのようにコンパイルされるかにあります。この変数を使用すると、WHERE id_campo not in ('817,803,495') という単一の文字列にコンパイルされます。ただし、「NOT IN」句の正しい形式には別の値が必要です: WHERE id_campo not in ('817','803','495').

解決策: FIND_IN_SET()

この問題を解決するために、MySQL は FIND_IN_SET() 関数を提供しています。変数で定義されたリストに基づいて除外します。変更されたクエリは次のようになります。

SET @idcamposexcluidos='817,803,495';
...
WHERE FIND_IN_SET(id_campo, @idcamposexcluidos) = 0
ログイン後にコピー
このソリューションでは、id_campo 値が @idcamposexcluidos 変数のいずれかの値と一致する行を正常に除外します。

注: FIND_IN_SET() は問題を解決し、id_campo でのインデックスの使用を防ぎます。コラム

以上が「NOT IN」句でカンマ区切りのリストを持つ MySQL 変数を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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