我在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 )