我有两个与用户和用户组相关的表,这样每个用户都可以分配给一个或多个用户组。当用户表包含用户组 ID 的逗号分隔值时,用户表包含一个外键作为 group_id。 我想在单个查询中获取与他相关的用户详细信息和逗号分隔的 group_name。有什么方法可以在 SQL 中实现吗? 用户表的字段为:(id, uname, group_id) 用户组: (id, group_name)
我想要的是在单个 SQL 查询中获得 uname、group_name、user.id、group.id。
我尝试了以下查询,但它给了我错误
SELECT t1.uname, group_concat(t.group_name) FROM user t1
LEFT JOIN user_group t2
ON t1.group_id = t2.id
WHERE t2.id IN t1.group_id
最佳答案
试试这个:
SELECT t1.uname, GROUP_CONCAT(t.group_name) AS group_name
FROM user t1
LEFT JOIN user_group t2 ON FIND_IN_SET(t2.id, t1.group_id)
GROUP BY t1.id;
关于mysql - 在 mysql 的 WHERE 子句中使用子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27560371/