ホームページ >データベース >mysql チュートリアル >「NOT IN」句で使用するために MySQL 変数を正しくフォーマットするにはどうすればよいですか?

「NOT IN」句で使用するために MySQL 変数を正しくフォーマットするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-31 20:32:10904ブラウズ

How to Correctly Format MySQL Variables for Use in a

「NOT IN」値リストの MySQL 変数形式

「NOT IN」リストを使用して MySQL クエリ内の特定の値を除外しようとする場合、除外値を変数に変えると便利な解決策になります。ただし、変数の形式が正しいことを確認することが重要です。

クエリに記載されているように、変数 '@idcamposexcluidos' を別の形式で割り当てようとしました:

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

ただし、これらの形式はいずれも期待どおりに機能しません。その理由は、「IN」句には単一の文字列ではなく個別の値が必要であるためです。したがって、クエリ:

WHERE id_campo not in (@idcamposexcluidos)

は実質的に:

WHERE id_campo not in ('817,803,495')

となり、これは誤りです。値は別の文字列リテラルとして指定する必要があります:

WHERE id_campo not in ('817','803','495')

この問題を解決するには、2 つのオプションがあります:

  1. 動的 SQL: クエリを作成します。除外された値の連結を動的に使用します。
  2. MySQL FIND_IN_SET() 関数: 次に示すように、FIND_IN_SET() 関数を使用して、除外値のカンマ区切りリストに値が存在するかどうかを確認します。
SET @idcamposexcluidos='817,803,495';
...
WHERE FIND_IN_SET(id_campo, @idcamposexcluidos) = 0

FIND_IN_SET() 関数はインデックスの使用を損なう可能性があります。

以上が「NOT IN」句で使用するために MySQL 変数を正しくフォーマットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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