問題:查詢用戶參與項目列表
在管理系統(tǒng)中,用戶登錄后需要查詢其參與的項目列表。已知項目表中 user_id 字段存儲著用戶表中的主鍵 id,且用戶登錄時系統(tǒng)會保存其 id。
起初嘗試直接使用 in 查詢,即:
select * from project where $this->auth->id in user_id
登錄后復(fù)制
但發(fā)現(xiàn)這樣寫法不符合 sql 語法。
解決方案:
如果不更改表結(jié)構(gòu),可以通過以下兩種方法解決:
1. find_in_set 函數(shù):
find_in_set 可判斷指定字符串是否在由逗號分隔的字符串列表中。例如,要查詢用戶 id 為 21 的參與項目:
find_in_set(21, user_id)
登錄后復(fù)制
like 可進行模糊匹配。要查詢用戶 id 為 21 的參與項目,可以使用如下條件組合:
user_id like '21,%' or user_id like '%,21' or user_id like '%,21,%' or user_id=21
登錄后復(fù)制