lui*_*son 65 mysql sql in-clause
疯狂尝试在类型的查询中设置变量:
SET @idcamposexcluidos='817,803,495';
Run Code Online (Sandbox Code Playgroud)
所以我可以在它上面使用它
WHERE id_campo not in (@idcamposexcluidos)
Run Code Online (Sandbox Code Playgroud)
我尝试用不同的格式定义变量而没有运气,似乎没有找到上面的具体示例:
SET @idcamposexcluidos='(817,803,495)';
...
WHERE id_campo not in @idcamposexcluidos
SET @idcamposexcluidos=817,803,495;
Run Code Online (Sandbox Code Playgroud)
没有成功.它要么返回错误要么忽略值.
jue*_*n d 106
你不能使用这样的IN
条款.它会在您的子句中编译为单个字符串IN
.但是一个IN
条款需要单独的值.
WHERE id_campo not in (@idcamposexcluidos)
Run Code Online (Sandbox Code Playgroud)
编译成
WHERE id_campo not in ('817,803,495')
Run Code Online (Sandbox Code Playgroud)
但它应该是
WHERE id_campo not in ('817','803','495')
Run Code Online (Sandbox Code Playgroud)
要克服这个问题,要么使用动态SQL,要么在MySQL中使用FIND_IN_SET:
SET @idcamposexcluidos='817,803,495';
...
WHERE FIND_IN_SET(id_campo, @idcamposexcluidos) = 0
Run Code Online (Sandbox Code Playgroud)
但使用像FIND_IN_SET()
无法使用索引的功能.