如何查询用户参与的项目,当用户 ID 存储在逗号分隔的列表中?

如何查询用户参与的项目,当用户 id 存储在逗号分隔的列表中?

如何编写一个 in 相关的查询方法?

用户表中包含一个 id 字段,project 表中包含一个 user_id 字段,其中存储着 user 表中的 id。管理员需要基于当前已登录用户的 id,查询其参加的比赛项目列表。

由于 user_id 字段的值可能是一个包含多个 id 的逗号分隔列表,因此直接使用 in 操作符进行查询会失败。

解决方法有两种:

  1. 使用 find_in_set 函数:此函数用于查找一个字符串在一个逗号分隔的列表中出现的第一个位置。例如,要查找 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

以上就是如何查询用户参与的项目,当用户 ID 存储在逗号分隔的列表中?的详细内容,更多请关注其它相关文章!