如何从 SQL 服务器 table 收集信息并在 INSERT-Statement 中使用它
How to collect information from SQL Server table and use it in INSERT-Statement
我在 SQL 服务器中有这个 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
现在我想将此 INSERT
声明不仅用于 Andreas,而且用于每个用户。用户在 table "User"。因此,我需要从 User
table 中收集所有用户并将其用作变量。
所以它看起来像这样
,(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 )
我在 SQL 服务器中有这个 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
现在我想将此 INSERT
声明不仅用于 Andreas,而且用于每个用户。用户在 table "User"。因此,我需要从 User
table 中收集所有用户并将其用作变量。
所以它看起来像这样
,(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 )