SQL Server CTE更新列

时间:2014-08-07 10:23:00

标签: sql sql-server common-table-expression

我有两个表,table1和table2具有以下结构

表1:

ID    Location     Date
----------------------------    
 1      abc        2014-6-3
 2      xyz        2013-6-5

表2:

ID Location    Date
----------------------    
1    abc       NULL
2    xyz       NULL
3    hgf       2012-9-8

我需要编写一个CTE,根据条件Table2.Date

使用table1.Date列中的值更新where table1.location = table2.location

有人可以帮助我,因为我对CTE概念很陌生

2 个答案:

答案 0 :(得分:1)

您可以为cte中的新值指定别名,然后使用该别名更新该值:

WITH cte AS
(
    SELECT
     t2.Date
    ,t1.Date AS NewDate
    FROM #Table1 t1
    JOIN #Table2 t2
    ON t1.Location=t2.Location
)
UPDATE cte
SET Date=NewDate;

答案 1 :(得分:0)

即使没有CTE,你也可以这样做:。

UPDATE TABLE2 T2
SET 
T2.DATE = (SELECT T1.DATE FROM TABLE1 T1 WHERE T1.LOCATION = T2.LOCATION)
WHERE T2.DATE IS NOT NULL