如何从 SQL Server 表中收集信息并在 INSERT-Statement(插入语句)中使用它



我在SQL Server中有以下INSERT语句:

INSERT INTO [UserClassSettings]
       ([RSRC]
       ,[Deleted]
       ,[DateNew]
       ,[DateChanged]
       ,[UserNew]
       ,[UserChanged]
       ,[ProgramID]
       ,[UserID]
       ,[ClassName]
       ,[WriteByOpen]
       ,[DefaultReadAccess]
       ,[DefaultWriteAccess]
       ,[Summary])
 VALUES
       (0
       ,0
       ,getdate()
       ,NULL
       ,(SELECT ProgramID FROM [User] where UserName='Andreas')
       ,NULL
       ,NEWID()
       ,(SELECT UserID FROM [User] where UserName='Andreas')
       ,'RootOrder_C'
       ,0
       ,0
       ,0
       ,0)
GO

现在,我想不仅对 Andreas 而且对每个用户都使用此INSERT语句。用户位于"用户"表中。因此,我需要从User表中收集所有用户并将其用作变量。

所以它看起来像这样

,(SELECT ProgramID FROM [User] where UserName=@user)
,(SELECT UserID FROM [User] where UserName=@user)

如果可以在 SQL 中执行此操作。

也许是这样的:

DECLARE @user int
DECLARE @anzahl int = (select count(*) from user)
DECLARE @i int = 0
WHILE @i < @anzahl BEGIN
    SET @i = @i + 1
    print @i
    -- INSERT?
END

我的问题是:

这是否可以在SQL中完成,如果是,我该怎么做?

提前感谢您的帮助。

你可以像这样插入SELECT查询的结果集

INSERT INTO [UserClassSettings]
       ([RSRC]
       ,[Deleted]
       ,[DateNew]
       ,[DateChanged]
       ,[UserNew]
       ,[UserChanged]
       ,[ProgramID]
       ,[UserID]
       ,[ClassName]
       ,[WriteByOpen]
       ,[DefaultReadAccess]
       ,[DefaultWriteAccess]
       ,[Summary])
SELECT
        0
       ,0
       ,getdate()
       ,NULL
       ,ProgramID
       ,NULL
       ,NEWID()
       ,UserID 
       ,'RootOrder_C'
       ,0
       ,0
       ,0
       ,0
FROM [User]

你试过这样的事情吗?

UPDATE UserClassSettings 
SET RSRC = 0, Deleted = 0, DateNew = GETDATE(), ......
WHERE UserID IN ( SELECT DISTINCT UserID FROM User )   

最新更新