1
,所以我更新表的功能等同于:的MySQL:ERROR 1111(HY000):与联接使用GROUP_CONCAT更新无效使用组功能的
create table NODE(
group_name varchar(100) not null,
full_name varchar(100) not null,
dependency longtext,
is_top ENUM('0','1') not null default 0,
...
);
的依赖是所有的full_name
的串联当此节点发生某些事情需要向下传递给祖先节点时,会触发其他节点。有一个顶级节点,它们都是“孩子”。偶尔会有更多人被添加到组中,我需要将其他子节点的full_names
更新为顶级节点的dependency
,作为由'&'分隔的一个巨大字符串。
这里是我的查询:
update NODE n1
join NODE n2
on n2.group_name=n1.group_name
set n1.dependency=GROUP_CONCAT(n2.full_name SEPARATOR '&')
where n1.is_top='1' and n2.is_top='0' and n1.group_name='MY GROUP NAME';
错误:
ERROR 1111 (HY000): Invalid use of group function
我的理解是,这应该是很好,毕竟你可以在SELECT语句中使用GROUP_CONCAT
,我做这一切的时间,我不明白这是无效的。
对于好奇:我没有设计这个数据库,是的,我重新命名了一些东西来隐藏数据库的真实性质以及它的工作原理。
谢谢!我不得不做一个小小的编辑,在GROUP_CONCAT中取出n2.full_name,并用完整名称替换,但这非常完美!我想知道为什么必须这样做。 –
@jasondancks,oups!那个人滑倒了。无论如何,我已经更新了我的答案。很高兴我能帮上忙! –