在mysql的WHERE子句中使用子查询

时间:2014-12-19 05:46:24

标签: mysql sql select group-by group-concat

我有两个表作为user和userGroup相关,这样每个用户都可以分配给一个或多个userGroup。当包含userGroup id的逗号分隔值时,user表包含外键作为group_id。 我想在单个查询中获取用户详细信息和与其相关的逗号分隔的group_name。我有什么方法可以在SQL中实现这一点吗? 用户表的字段是:(id,uname,group_id) userGroup:(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

1 个答案:

答案 0 :(得分:1)

试试这个:

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;