donc je mets à jour une table qui est fonctionnellement équivalent à:MySQL: mise à jour avec JOIN en utilisant GROUP_CONCAT: ERREUR 1111 (HY000): Utilisation incorrecte de la fonction de groupe
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,
...
);
La dépendance est une concaténation du full_name
de tous les autres nœuds qui se déclenchent quand quelque chose arrive à ce nœud qui a besoin de descendre jusqu'aux nœuds ancêtres. Il existe un nœud de niveau supérieur dont tous sont des «enfants». Parfois, un groupe de plus est ajouté au groupe et j'ai besoin de mettre à jour le dependency
du nœud de niveau supérieur avec full_names
des autres nœuds enfants en tant que chaîne géante séparée par '&'.
Voici était ma requête:
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';
erreur:
ERROR 1111 (HY000): Invalid use of group function
Ma compréhension est ce qui devrait être bien, vous pouvez, après tout utiliser GROUP_CONCAT
dans une instruction select, et je le fais tout le temps, je ne comprends pas comment cela est invalide.
pour les curieux: je n'ai pas conçu cette base de données, et oui j'ai renommé des choses pour cacher la vraie nature de la base de données et comment cela fonctionne.
Merci! J'ai dû faire un petit montage pour sortir le n2.full_name dans GROUP_CONCAT et le remplacer par le nom complet mais c'était parfait! Je me demande pourquoi cela doit être fait de cette façon. –
@jasondancks, oups! celui-là a glissé. J'ai mis à jour ma réponse de toute façon. Heureux d'avoir pu aider! –