Merge filtré avec une clause WHERE
Bonjour,
Je dois restaurer une table à partir d'une sauvegarde, mais ma requête n'est pas franchement optimisée,
je crois qu'elle le fait sur toute la table
Code:
1 2 3 4 5
|
Id_question | id_codeuai | reponse_N | reponse_N1 ....
1 25001 10 11
2 25001 11 0
3 27002 12 3 |
la clef primaire est basée sur id_question et id_codeuai.
J'ai fais la requête suivante
REPONSES est la tables d'origine et REPONSES_SAUV la sauvegarde.
Je voudrais simplement mettre à jour la question dont l(ID est 56 par exemple)
Code:
1 2 3 4 5
|
MERGE INTO REPONSES U1
USING (SELECT * FROM REPONSES_SAUV) U2
ON (U1.ID_QUESTION = U2.ID_QUESTION AND U1.CODE_UAI = U1.CODE_UAI)
WHEN MATCHED THEN UPDATE SET U1.REPONSE_N = U2.REPONSE_N, U1.REPONSE_N1 = U2.REPONSE_N1, U1.REPONSE_N2 = U2.REPONSE_N2 , U1.REPONSE_N3 = U2.REPONSE_N3; |
Mais je ne sais pas ou mettre la clause WHERE car si je fais
Code:
1 2 3 4 5
|
MERGE INTO REPONSES U1
USING (SELECT * FROM REPONSES_SAUV WHERE ID_QUESTION=56) U2
ON (U1.ID_QUESTION = U2.ID_QUESTION AND U1.CODE_UAI = U1.CODE_UAI)
WHEN MATCHED THEN UPDATE SET U1.REPONSE_N = U2.REPONSE_N, U1.REPONSE_N1 = U2.REPONSE_N1, U1.REPONSE_N2 = U2.REPONSE_N2 , U1.REPONSE_N3 = U2.REPONSE_N3; |
J'ai la réponse
Code:
1 2
|
ORA-30926 : Impossible d'obtenir un ensemble de lignes stables dans les tables sources .... |
Si vous avez une idée ... j'y retourne