2015-03-31 28 views
0

这里是伪代码我试图做的事:的毗连值到新列的MySQL

update msa_list_copy 
select group_concat(distinct msa_name separator ', ') as concat_msa_name 
group by msa 

我的表msa_list_copy有两列... MSA和MSA_NAME。我试图连接共享相同msa(数字)的msa_names并将此值保存在(当前为空)第三列concat_msa_name中,但我无法完全理解。

回答

1

您需要指定您正在更新的字段。

update msa_list_copy join 
(select msa, group_concat(distinct msa_name separator ', ') 
     as concat_msa_name from msa_list_copy 
    group by msa) as t0 using(msa) 
set msa_list_copy.concat_msa_name=t0.concat_msa_name 
+0

这给了我一个SQL语法错误在第1行固定为3线 – jonmrich 2015-03-31 01:37:52

+0

SQL语法错误。我通过查询使用您的组,并且缺少表名。 – jonmrich 2015-03-31 01:41:49

+1

开始从第一个括号 – Rasika 2015-03-31 01:45:09

0

的SQL是:

update msa_list_copy inner join 
(select group_concat(distinct msa_name separator ', ') as concat_msa_name 
group by msa) as q on msa_list_copy.concat_msa_name=q.concat_msa_name set msa_list_copy.concat_msa_name = q.concat_msa_name 
+0

它应该指定更新中的连接以说明哪个记录被更新。 – Rasika 2015-03-31 01:40:41

+0

这给了我一个错误第3行 – jonmrich 2015-03-31 01:41:20

+0

@Rasika关于如何更新它的建议? – jonmrich 2015-03-31 01:43:13