不确定使用案例或IF语句的天气

时间:2013-07-30 16:17:44

标签: sql if-statement replace case

我有两张桌子。第一个是

  

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语句或一个案例。我不知道如何完成它。我用这样的东西来代替一个不太复杂的列。但这就是我如何使用两组坐标作为我的唯一标识符。

任何帮助都会非常感激。

1 个答案:

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