一尘不染

MySQL变量格式,用于“ NOT IN”值列表

mysql

疯狂尝试在类型查询中设置变量:

SET @idcamposexcluidos='817,803,495';

这样我就可以在

WHERE id_campo not in (@idcamposexcluidos)

我尝试过用不同的格式定义变量,但是没有运气,似乎也找不到上述的特定示例:

SET @idcamposexcluidos='(817,803,495)';
...
WHERE id_campo not in @idcamposexcluidos


SET @idcamposexcluidos=817,803,495;

没有成功。它要么返回错误,要么忽略值。


阅读 486

收藏
2020-05-17

共1个答案

一尘不染

您不能使用这样的IN子句。它在您的子句中编译为 单个 字符串IN。但是IN子句需要 单独的 值。

WHERE id_campo not in (@idcamposexcluidos)

编译为

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

但应该是

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

为了克服这个问题,可以使用动态SQL或在MySQL中使用FIND_IN_SET

SET @idcamposexcluidos='817,803,495';
...
WHERE FIND_IN_SET(id_campo, @idcamposexcluidos) = 0

但是使用像这样的函数FIND_IN_SET()不能使用索引。

2020-05-17