【问题标题】:Create Script update from Select statement从 Select 语句创建脚本更新
【发布时间】:2017-02-22 05:10:50
【问题描述】:

我在任何数据库中都有一个表。我想创建更新脚本以从 select 语句中更新所有数据库。有人帮我吗?

【问题讨论】:

  • 你有没有尝试过?
  • 帮你什么忙?您对此有何疑问?
  • 我正在编写一个更新工具。此工具将创建脚本更新以在另一个数据库中更新
  • 每个数据库中是否有相同的表
  • 我在其他数据库中有相同的表。所以我需要创建脚本来更新它

标签: sql


【解决方案1】:
BEGIN TRAN

    DECLARE @string varchar(Max),@Strt int,@End int

    SELECT Name,Database_Id INto #temp  FROM sys.databases WHERE sys.databases.database_id>4
    SELECT ROW_NUMBER()Over(ORDER BY #temp.Database_Id)Rownum,*INTO #Temp1 FROM #temp With(NOLOCK)

    SET @strt=1
    SELECT @End=Max(Rownum)FROM #temp1 

    WHILE @strt<=@End
        BEGIN
         DECLARE @DB Varchar(255)
         SELECT @DB=Name FROM #temp1 With(NOLOCK) WHERE Rownum=@strt

         Set @string ='Update '+@DB+'..TableName Set ColumnName=''XYZ'' from TableName1 Where CloumnName=''ABC'''
         PRINT @string
         Execute (@string)
         SET @strt=@strt+1
        END

    DROP TABLE #temp
    DROP TABLE #Temp1

ROLLBACK    TRAN

【讨论】:

  • 此查询将在所有数据库中将您的表列 1 更新为 1
【解决方案2】:

例子:

table1column_id1,column_id2

table2column_id2,column_id1

要更新table2column_id2 = 10 的值,我们可以尝试以下方法

update table2 set column_id2 = 10 where column_id1 in 
    (select column_id1 from table1)

【讨论】:

    猜你喜欢
    • 2020-06-23
    • 1970-01-01
    • 2010-11-06
    • 2017-01-15
    • 1970-01-01
    • 2016-02-25
    • 2021-09-05
    • 2020-09-24
    • 1970-01-01
    相关资源
    最近更新 更多