且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

为什么不能使用With关键字同时更新多个列?

更新时间:2023-11-09 22:59:52

这似乎可行(无论如何,它还是使用DUAL进行了简单的查询):

This appears to work (it did with a simple query using DUAL anyway):

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)
                                        );

关于子查询以"WITH"开头为什么不起作用的原因,我只能想象是因为Oracle SQL的设计人员没有预料到这种用法.

As for why it doesn't work if the subquery starts with "WITH", I can only imagine that it is because the designers of Oracle SQL hadn't anticipated this usage.