Oracle
 sql >> Base de données >  >> RDS >> Oracle

Pourquoi ne puis-je pas mettre à jour plusieurs colonnes à la fois à l'aide du mot-clé With ?

Cela semble fonctionner (il l'a fait avec une simple requête utilisant DUAL de toute façon):

UPDATE Table_A SET (Col_One, Col_Two) = (select col_one, col_two from
                                          (WITH OneValue AS (SELECT DISTINCT t.Col_One, T.Col_two
                                                  FROM Table_Two t, Table_A a
                                                  WHERE t.id = a.New_Id))
                                           SELECT Col_One, Col_Two FROM OneValue)
                                        );

Quant à savoir pourquoi cela ne fonctionne pas si la sous-requête commence par "AVEC", je ne peux qu'imaginer que c'est parce que les concepteurs d'Oracle SQL n'avaient pas prévu cette utilisation.