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

标签 mysql sql select group-by group-concat

我有两个与用户和用户组相关的表,这样每个用户都可以分配给一个或多个用户组。当用户表包含用户组 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/

相关文章:

php - OctoberCMS:如何防止将提交的表单保存到数据库中?

mysql - 在 MYSQL 的 Case When 语句中使用四个条件

mysql 将列标题更改为行标题

sql - Golang SQL 查询变量替换

html - 适合父 div 以选择标签宽度

mysql - 为什么在这种情况下有很多连接(MySQLNonTransientConnectionException)

php - 使用PHP错误查看存储在MySQL数据库中的PDF文件

php - PHP 数组的 Foreach 循环问题

mysql - 来自一列的分组伙伴

algorithm - 快速选择算法 - 简化说明