mysql中的group_concat在不同的行上返回重复的值。在表字段中,值是由逗号分隔的整数数组。
id port_id
---- -----------
1 0,1
1 1,2
1 0,1
1 3,5
2 1
2 2,6
1 7,1
当我针对每个id查询不同的port_id时,将始终包含重复项。
select group_concat(distinct port_id) as 'grouped_ports'
from ports
where id =1
group by id;
将结果显示为
grouped_ports
----------------
0,1,1,2,3,5,7,1
如何从group_concat中获取不同的值,只有0,1,2,3,5,7作为输出?
答案 0 :(得分:1)
您误解了GROUP_CONCAT正在做什么改变查询来执行此操作
select group_concat(distinct port_id separator ' - ') as 'grouped_ports'
from ports
where id =1
group by id;
你会看到它结合了这样的字符串
0,1 - 1,2 - 3,5 - 7,1
您需要规范化数据库才能执行此操作。这里有一些关于如何实现这个的有用链接
How to remove duplicate comma separated value in a single column in MySQL
https://dba.stackexchange.com/questions/87144/remove-duplicate-terms-from-column
你真正想要做的是创建另一个表,其中每个port_id都映射到你的表。那样你就只有唯一的port_id了