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 ', '),
但是这只会返回第一个主机名结果以及user-id和team-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%准确,但这就是它们中的逻辑(它们只包含了我在现实世界中遇到的更多列。)
答案 0 :(得分:0)
我想你错过了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
放在子查询之外