J'ai eu ce message suite à une requête de merge:
le contenu de table events et events_last est le suivant:
Le problème provient de la jointure entre les deux tables events_last et events qui retourne plus qu'une ligne pour le même event , donc pour résoudre le problème, je propose la solution suivante :
Juste une remarque la solution dépend de votre besoin, pour ne pas avoir cet erreur, il suffit de s'assurer que la jointure entre les deux tables ne retourne pas plus qu'une ligne en appliquant les clauses dans le bloc ON comme dans notre cas (a.event =b.event).
MERGE INTO events_last a
USING events b
ON (a.event =b.event)
WHEN MATCHED THEN
UPDATE SET a.date_event = b.date_event
WHEN NOT MATCHED THEN
INSERT (event, date_event)
VALUES (b.event, b.date_event);
le contenu de table events et events_last est le suivant:
select date_event, event from events order by event;
select date_event, event from events_last order by event desc ;
Le problème provient de la jointure entre les deux tables events_last et events qui retourne plus qu'une ligne pour le même event , donc pour résoudre le problème, je propose la solution suivante :
MERGE INTO events_last a USING ( select max(date_event) date_event,event from events group by event ) b ON (a.event =b.event) WHEN MATCHED THEN UPDATE SET a.date_event = b.date_event WHEN NOT MATCHED THEN INSERT (event, date_event) VALUES (b.event, b.date_event);
Juste une remarque la solution dépend de votre besoin, pour ne pas avoir cet erreur, il suffit de s'assurer que la jointure entre les deux tables ne retourne pas plus qu'une ligne en appliquant les clauses dans le bloc ON comme dans notre cas (a.event =b.event).
Aucun commentaire:
Enregistrer un commentaire