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/