Bạn không thể sử dụng IN
mệnh đề như vậy. Nó biên dịch thành một đơn chuỗi trong IN
của bạn mệnh đề. Nhưng một IN
mệnh đề cần riêng biệt giá trị.
WHERE id_campo not in (@idcamposexcluidos)
biên dịch thành
WHERE id_campo not in ('817,803,495')
nhưng nó phải là
WHERE id_campo not in ('817','803','495')
Để khắc phục điều này, hãy sử dụng SQL động hoặc trong MySQL, bạn có thể sử dụng FIND_IN_SET :
SET @idcamposexcluidos='817,803,495';
...
WHERE FIND_IN_SET(id_campo, @idcamposexcluidos) = 0
nhưng sử dụng một hàm như FIND_IN_SET()
không thể sử dụng các chỉ mục.