INSERT INTO `projects` VALUES (17, '测试01', ',1,3,5,', '', '2023-02-03', '2023-02-08', 0, 10, 20);
projects表user_id字段存储用户表users的id,但是id有多个以逗号分隔,怎么根据projects表的user_id找到对应用户表的姓名user_name Mysql怎么写sql语句
在 MySQL 中,使用 SQL 语句可以实现根据 projects
表的 user_id
找到对应用户表的姓名 user_name
。你可以使用 FIND_IN_SET()
函数来查找逗号分隔的 id 字符串对应的用户记录,并通过 JOIN
连接 projects
表和 users
表。
以下是一个示例 SQL 查询语句:
SELECT p.project_id, p.project_name, u.user_name
FROM projects p
JOIN users u ON FIND_IN_SET(u.id, p.user_id)
WHERE p.project_id = 17
在这个示例中,我们从 projects
表和 users
表中选择需要的字段,并使用 JOIN
来将两个表连接起来。FIND_IN_SET(u.id, p.user_id)
用于判断 u.id
是否在 p.user_id
的逗号分隔的字符串中存在。通过 WHERE
条件筛选指定的项目(在这里是项目ID为 17)。
请注意,这个例子假设 users
表中的主键是 id
,并且 projects
表和 users
表可以通过 user_id
和 id
字段进行匹配。
根据你的实际需求和表结构,可能需要调整表名、字段名、条件和查询的结果等。
-------------------------------------------
--------------------------------------------
如果要查询的 user_name
也以逗号分隔显示,可以使用 GROUP_CONCAT() 函数将多个结果合并为一个字符串。
以下是修改后的 SQL 查询语句:
SELECT p.project_id, p.project_name, GROUP_CONCAT(u.user_name) AS user_names
FROM projects p
JOIN users u ON FIND_IN_SET(u.id, p.user_id)
WHERE p.project_id = 17
GROUP BY p.project_id
在这个示例中,我们使用 GROUP_CONCAT(u.user_name)
将多个用户名称合并为一个以逗号分隔的字符串,并将其命名为 user_names
列。使用 GROUP BY
按照 p.project_id
和 p.project_name
分组。
执行该查询,将返回一个项目的ID、项目名称以及对应的用户姓名列表,多个姓名以逗号分隔显示。