-1

我有两张桌子。第一个是

树2009

第二个是

树2012

. 我在两个表中都没有一个匹配的唯一标识符。相反,我使用的唯一标识符是 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 语句或案例。我不确定如何完成它。我用类似的东西来替换一个不太复杂的列。但这就是我使用两组坐标作为我的唯一标识符的方式。

任何帮助将不胜感激。

4

1 回答 1

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 不为空的记录做一些事情,那么您可以使用一个案例,否则,我看不到重点。

于 2013-07-30T18:20:07.953 回答