我有两张桌子。第一个是
Tree2009
,第二个是
Tree2012
。我在两个表中都没有单个匹配的唯一标识符。相反,我使用的唯一标识符是两列的组合,y_coord和x_coord。但是,两个表都具有相同的列。 tree2012表只是table2009的更新版本,但table2012有许多缺失值。
我的任务是用tree2009.inspect_dt中的值替换tree2012.inspect_dt(列名是inspect_dt)中的任何空值。
if inspect_dt is null
update tree2012
set inspect_dt = (SELECT inspect_dt from tree2009 where tree2009.x_coord = tree2012.x_coord and tree2009.y_coord = tree2012.y_coord)
到目前为止,我有这个。我相信我需要一个if / else语句或一个案例。我不知道如何完成它。我用这样的东西来代替一个不太复杂的列。但这就是我如何使用两组坐标作为我的唯一标识符。
任何帮助都会非常感激。
答案 0 :(得分:0)
您可以在一个语句中执行此操作,而无需事先获取inspect_dt:
UPDATE tree2012
SET inspect_dt =
( SELECT inspect_dt
FROM tree2009
WHERE tree2009.x_coord = tree2012.x_coord
AND tree2009.y_coord = tree2012.y_coord
AND tree2009.inspect_dt IS NOT NULL
)
WHERE inspect_dt IS NULL;
您可以在此sqlFiddle中查看它,看它是否正在运行。
如果你想对inspect_dt不为null的记录做一些事情,那么你可以使用一个案例,否则,我看不到这一点。