首頁 > 資料庫 > mysql教程 > 如何在「NOT IN」子句中使用帶有逗號分隔清單的 MySQL 變數?

如何在「NOT IN」子句中使用帶有逗號分隔清單的 MySQL 變數?

DDD
發布: 2025-01-04 06:11:43
原創
667 人瀏覽過

How Can I Use a MySQL Variable with a Comma-Separated List in a

為「NOT IN」查詢中的排除值清單建立 MySQL 變數

在 MySQL 中,建立基於預定義清單排除特定值的查詢可以很棘手。此問題深入探討分配變數以包含排除值的逗號分隔清單並在「NOT IN」子句中使用它的問題。

不正確的變數格式

正如問題中提到的,以各種格式分配變數並不成功,要麼導致錯誤,要麼忽略值。以下是嘗試的格式:

  • SET @idcamposexcluidos='(817,803,495)';
  • SET @idcamposexcluidos=817,803,495;

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板