Php 如何基于GROUP BY将字符串连接到新列中
然而,对于Php 如何基于GROUP BY将字符串连接到新列中,php,mysql,string,concatenation,aggregate,Php,Mysql,String,Concatenation,Aggregate,然而,对于mytabletable,我有一个类似的问题 id string aggr 1 A NULL 1 B NULL 2 F NULL 不同之处在于我需要更新表以获得以下结果: id string aggr 1 A A|B| 1 B A|B| 5 C C|E|C| 5 E C|E|C| 5 C
mytable
table,我有一个类似的问题
id string aggr
1 A NULL
1 B NULL
2 F NULL
不同之处在于我需要更新表以获得以下结果:
id string aggr
1 A A|B|
1 B A|B|
5 C C|E|C|
5 E C|E|C|
5 C C|E|C|
2 F F|
因此,相同的id
具有相同的newcolumn
值
在字符串的最末尾添加分隔符|
是绝对正确的。这样,我就可以更快地计算newcolumn
中有多少“项”,而无需添加+1
,因为在最后(就在中间)缺少。另外,在aggr
列中添加另一个或两个零件时,我不关心验证(如果我之前有管道的话)
谢谢。您可以在原来的桌子上加入一个小组
select a.id, a.string , b.aggr
from my_table a
inner join (
select id, group_concat(string SEPARATOR '|') as aggr
from my_table
group by id
) b on a.id = b.id
你们可以在原来的桌子上加入一个小组
select a.id, a.string , b.aggr
from my_table a
inner join (
select id, group_concat(string SEPARATOR '|') as aggr
from my_table
group by id
) b on a.id = b.id
您可以尝试以下查询:
UPDATE my_table t
SET aggr = (
SELECT * FROM (
SELECT CONCAT(GROUP_CONCAT(t2.string SEPARATOR '|'), '|')
FROM my_table t2
WHERE t2.id = t.id
) AS X
)
您可以尝试以下查询:
UPDATE my_table t
SET aggr = (
SELECT * FROM (
SELECT CONCAT(GROUP_CONCAT(t2.string SEPARATOR '|'), '|')
FROM my_table t2
WHERE t2.id = t.id
) AS X
)
您真的需要更新表,还是只在视图中显示结果?您可以使用group_concat将多行合并为1,并实际使用count函数来计算给定ID的字符串数。是的,我需要更新一个表。是的,我知道这个表会有冗余数据。你真的需要更新一个表,还是只在视图中显示结果?您可以使用group_concat将多行合并为1,并实际使用count函数来计算给定ID的字符串数。是的,我需要更新一个表。是的,我知道该表将有冗余数据。很抱歉,但我收到一个SQL错误(1093):表“t”被指定了两次,既作为“更新”的目标,也作为单独的数据源。能否给我您运行的查询?与您的查询相同(使用这些列名创建了一个my_表)。谢谢。很抱歉,我收到一个SQL错误(1093):表“t”被指定了两次,既作为“更新”的目标,也作为单独的数据源。能否给我您运行的查询?与您的查询相同(创建了一个具有这些列名的my_表)。谢谢。很抱歉,它是SELECT,但问题中询问了更新。谢谢。很抱歉,它是SELECT,但问题中询问了更新。非常感谢。