Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何基于GROUP BY将字符串连接到新列中_Php_Mysql_String_Concatenation_Aggregate - Fatal编程技术网

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,但问题中询问了更新。非常感谢。