根据执行变量的结果更新现有表

时间:2018-06-14 11:21:31

标签: sql-server sql-server-2008

我正在寻找有关如何解决这一挑战的一些观点。我有一个变量说@Var1,其中包含一个SQL语句。

实施例

@Var1 = `SELECT * from another_table WHERE City IS NOT NULL AND Address IS NOT NULL`

当我执行此变量时

EXECUTE sp_executesql @Var1

我得到了所需的结果,城市和地址不包括NULL值。

我希望根据@Var1的执行结果更新现有表(tbl1):

类似的东西:

UPDATE TABLE tbl1 AS (EXECUTE sp_executesql @Var1)

这样的事情是否可能?或者我可以采取什么方法将@Var1的结果导入tbl1

提前致谢。

2 个答案:

答案 0 :(得分:1)

对于为每个步骤添加链接我表示道歉,但他们应该得到信任。

有两个步骤。插入临时表,然后将该临时表中的数据合并到最终表中。

您必须先插入临时表。 INSERT INTO @TABLE EXEC @query with SQL Server 2000

然后你必须将这些数据合并到主表中。 SQL MERGE statement to update data

答案 1 :(得分:0)

试试这个

UPDATE  tbl1 
        SET Column1= b.Column1,
        SET Column2= b.Column2,
        SET Column3= b.Column3,
FROM    tbl1 a 
INNER JOIN (
SELECT  Column1,Column2,Column3
FROM    another_table WHERE City IS NOT NULL AND Address IS NOT NULL ) b ON   a.city_Id  = b.city_Id