如何查詢用戶參與的項目,當(dāng)用戶 ID 存儲在逗號分隔的列表中?

如何查詢用戶參與的項目,當(dāng)用戶 ID 存儲在逗號分隔的列表中?

如何編寫一個 in 相關(guān)的查詢方法?

用戶表中包含一個 id 字段,project 表中包含一個 user_id 字段,其中存儲著 user 表中的 id。管理員需要基于當(dāng)前已登錄用戶的 id,查詢其參加的比賽項目列表。

由于 user_id 字段的值可能是一個包含多個 id 的逗號分隔列表,因此直接使用 in 操作符進行查詢會失敗。

解決方法有兩種:

  1. 使用 find_in_set 函數(shù):此函數(shù)用于查找一個字符串在一個逗號分隔的列表中出現(xiàn)的第一個位置。例如,要查找 user_id 為 21 的用戶參加的項目,可以使用以下查詢:
select * from project where find_in_set(21, user_id)
  1. 使用 like 操作符:此操作符用于匹配部分字符串。例如,要查找 user_id 以 21 開頭的用戶參加的項目,可以使用以下查詢:
SELECT * FROM Project WHERE user_id LIKE '21,%' OR user_id LIKE '%,21' OR user_id LIKE '%,21,%' OR user_id = 21

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊11 分享