Using the wrong join condition in a FROM clause causes unpredictable results. If the FROM clause specifies a one-to-many join and the SET clause references a cell from the “many” side of the join, the cell is updated from the first value selected. In other words, if the join condition causes multiple rows of the table to be updated per row id, the first row returned becomes the update result. For example:
UPDATE T1 SET T1.c2 = T2.c2 FROM T1 JOIN TO T2 ON T1.c1 = T2.c1
If table T2 has more than one row per T2.c1, results might be as follows:
T2.c1 T2.c2 T2.c3
1 4 3
1 8 1
1 6 4
1 5 2
With no ORDER BY clause, T1.c2 may be 4, 6, 8, or 9.
- With
ORDER BY T2.c3
, T1.c2 will be updated to 8. - With
ORDER BY T2.c3 DESC
, T1.c2 will be updated to 6.
时间: 2024-10-13 00:43:40