在 MySQL 中,建立基於預定義清單排除特定值的查詢可以很棘手。此問題深入探討分配變數以包含排除值的逗號分隔清單並在「NOT IN」子句中使用它的問題。
不正確的變數格式
正如問題中提到的,以各種格式分配變數並不成功,要麼導致錯誤,要麼忽略值。以下是嘗試的格式:
The問題
挑戰在於如何在查詢中編譯「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
此解決方案成功排除 id_campo 值與 @idcamposexcluidos 變數中的任何值相符的行。
注意: FIND_IN_SET() 解決了這個問題,它阻止在 id_campo 列上使用索引。
以上是如何在「NOT IN」子句中使用帶有逗號分隔清單的 MySQL 變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!