mysql - 基于另一列连接 SQL 查询的结果

标签 mysql sql group-by

SELECT DISTINCT * FROM ( SELECT hostname, table2.user-id, table2.user-team from
 INNER JOIN table2 on table1.id = table2.id) 

所以目前我的 SQL 查询输出如下:

hostname user-id     user-team
a           1           alpha   
a           2            beta 
b           3            beta
c           4           alpha
c           1            null
c           3           alpha

但我想要的是这样的:

hostname user-id     user-team
a           1, 2      alpha, beta   
b           3            beta
c           4, 1, 3     alpha

我尝试在查询末尾使用 GROUP BY hostname 语句,以及 GROUP_CONCAT(DISTINCT user_id SEPARATOR ', '), GROUP_CONCAT(DISTINCT user_team SEPARATOR ', '),

但这只会返回第一个主机名结果以及用户 ID 和团队 ID 的所有可能值。我觉得我很接近,但我不太明白。有什么帮助吗?

(目前已返回)

hostname    user-id      user-team
a            1,2,3,4       alpha, beta

以此作为 SQL 查询

SELECT DISTINCT * 
FROM ( SELECT hostname, 
              GROUP_CONCAT(DISTINCT table2.user-id SEPARATOR(', '),
              GROUP_CONCAT(DISTINCT table2.team-id SEPARATOR(', ')
       from table1
       INNER JOIN table2 on table1.id = table2.id) 
GROUP BY hostname

虽然查询不是 100% 准确,但这就是其中的逻辑(它们只是在我遇到的现实世界问题中包含更多的列。)

最佳答案

我想你错过了GROUP BY

<强> SQL DEMO

SELECT hostname,
       GROUP_CONCAT(DISTINCT user_id SEPARATOR  ', ') as users, 
       GROUP_CONCAT(DISTINCT user_team SEPARATOR  ', ') as teams
FROM Table1
GROUP BY hostname 

输出

| hostname |   users |       teams |
|----------|---------|-------------|
|        a |    1, 2 | alpha, beta |
|        b |       3 |        beta |
|        c | 4, 1, 3 |       alpha |

编辑:编辑问题后,问题是您将GROUP BY放在子查询之外

关于mysql - 基于另一列连接 SQL 查询的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47226663/

相关文章:

php - 我的 php 代码不会将用户添加到 MySQL 数据库

python - 如何使用 Python 和 MySQLdb 检索 mysql 数据库中的表名?

java - 在 Java 中执行创建表语句时出错?

mysql - 如何在Wordpress中进行分组?

mysql - SQL 子句 "GROUP BY 1"是什么意思?

mysql - 无法向用户授予数据库权限

MySQL "unknown column"

sql - 对多列使用 group by

sql - 两个 SELECT 语句作为两列

mysql - 如何在 mysql 中使用 COUNT() 和 where ?