使用复杂SQL的SQL插入
我曾尝试使用insert into语句和复杂的sql命令。 我有两个错误: 在此上下文中不允许子查询。仅标量表达式 “和”附近语法不正确“)” 声明:使用复杂SQL的SQL插入,sql,insert,subquery,expression,Sql,Insert,Subquery,Expression,我曾尝试使用insert into语句和复杂的sql命令。 我有两个错误: 在此上下文中不允许子查询。仅标量表达式 “和”附近语法不正确“)” 声明: Insert into [TestSystem2].[dbo].[Test_Software_Mandant_Status] ([SW_IDN], [Mandant_IDN], Software_Status], [UserName], [TimeStamp]) values (15000, 9999, (SELECT [Software_
Insert into
[TestSystem2].[dbo].[Test_Software_Mandant_Status] ([SW_IDN], [Mandant_IDN],
Software_Status], [UserName], [TimeStamp])
values
(15000, 9999,
(SELECT [Software_Status]
FROM [TestSystem2].[dbo].[Test_Software_Status]
WHERE [Software_Status_Kennzeichen] = 'S' and [Software_Status_Text] = 'Test'),
testuser,
SELECT GETDATE())
我在其他地方使用了类似的结构化更新命令。我不喜欢在这个插入中使用变量,任何人都可以帮我解决这个问题吗?我个人会使用一个变量,它会使查询看起来更干净
DECLARE @SoftwareStatus VARCHAR(100)
SELECT @SoftwareStatus = SELECT TOP 1 [Software_Status]
FROM [TestSystem2].[dbo].[Test_Software_Status]
WHERE [Software_Status_Kennzeichen] = 'S' and [Software_Status_Text] = 'Test')
然后插入您的:
INSERT INTO
[TestSystem2].[dbo].[Test_Software_Mandant_Status]
([SW_IDN], [Mandant_IDN], Software_Status], [UserName], [TimeStamp])
VALUES
(15000, 9999, @SoftwareStatus, 'testuser', GETDATE())
请注意,GETDATE()
不需要它自己的选择尝试以下操作:
Insert into [TestSystem2].[dbo].[Test_Software_Mandant_Status] ([SW_IDN],
[Mandant_IDN],
[Software_Status],
[UserName],
[TimeStamp])
SELECT 15000,
9999,
[Software_Status],
testuser,
GETDATE()
FROM [TestSystem2].[dbo].[Test_Software_Status]
WHERE [Software_Status_Kennzeichen] = 'S'
and [Software_Status_Text] = 'Test',
testuser在这里是字符串值吗?@user251414-我在;)中添加了这个值但是我把它放在了Quotes中,注意GETDATE()不需要自己的SELECT,它修复了其中一个错误,谢谢!