Group_concat 在具有值数组的行上
Group_concat on rows with array of values
group_concat in mysql 在不同的行上返回重复值。在 table 中,字段值是由逗号分隔的整数数组。
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?
您误解了 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
您真正想要做的是制作另一个 table,其中每个 port_id 映射到您的 table。这样你就已经只有唯一的 port_id 的
group_concat in mysql 在不同的行上返回重复值。在 table 中,字段值是由逗号分隔的整数数组。
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?
您误解了 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
您真正想要做的是制作另一个 table,其中每个 port_id 映射到您的 table。这样你就已经只有唯一的 port_id 的