問題:查詢用戶參與項(xiàng)目列表
在管理系統(tǒng)中,用戶登錄后需要查詢其參與的項(xiàng)目列表。已知項(xiàng)目表中 user_id 字段存儲(chǔ)著用戶表中的主鍵 id,且用戶登錄時(shí)系統(tǒng)會(huì)保存其 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 可判斷指定字符串是否在由逗號(hào)分隔的字符串列表中。例如,要查詢用戶 id 為 21 的參與項(xiàng)目:
find_in_set(21, user_id)
登錄后復(fù)制
like 可進(jìn)行模糊匹配。要查詢用戶 id 為 21 的參與項(xiàng)目,可以使用如下條件組合:
user_id like '21,%' or user_id like '%,21' or user_id like '%,21,%' or user_id=21
登錄后復(fù)制