MySQL では、事前定義されたリストに基づいて特定の値を除外するクエリを構築できます。トリッキーになる。この質問では、除外値のカンマ区切りリストを含む変数を割り当て、それを「NOT IN」句で使用する問題について詳しく説明します。
不正な変数形式
質問で述べたように、さまざまな形式での変数の割り当ては失敗し、エラーが発生するか、値が無視されます。試行された形式は次のとおりです:
問題
課題は、クエリ内で「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
注: FIND_IN_SET() は問題を解決し、id_campo でのインデックスの使用を防ぎます。コラム
以上が「NOT IN」句でカンマ区切りのリストを持つ MySQL 変数を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。