我有表TB1,其中包含以下列:
ID | date
---------------------
1 | 12-JUL-10
2 | 12-JUL-10
3 | 12-JUL-10
4 | 12-JUL-10
.
.
.
10000 | 12-JUL-10
表2
ID | date
---------------------
1 | 12-JAN-09
2 | 12-JUL-09
3 | 12-JUL-09
4 | 12-JUL-08
.
.
.
5800 | 12-JUL-08
如何更新table2与table1具有类似ID的日期。
谢谢:)
答案 0 :(得分:3)
一般
UPDATE table2 t2
SET date_col = (SELECT t1.date_col
FROM table1 t1
WHERE t1.id = t2.id)
WHERE EXISTS (
SELECT 1
FROM table1 t1
WHERE t1.id = t2.id )
如果可以保证table2中的每个ID都存在于table1中(或者如果您希望date_col在没有匹配时设置为NULL),则可以消除WHERE EXISTS。但一般来说,如果有匹配的记录,你只想进行更新。
答案 1 :(得分:0)
然后还使用内联视图进行更新。这样做有点棘手,因为我认为它需要主键存在于连接的两端,否则会因错误而失败。
update (
select
t1.id as t1_id,
t1.value as t1_date,
t2.id as t2_id,
t2.value as t2_date
from
table1 t1
join table2 t2 on (t1.id = t2.id)
)
set t2_date = t1_date