[英]Using a sub-query in an SQL insert statement
IF NOT EXISTS (SELECT TOP 1 CityName FROM dbo.City WHERE [Name] = 'Default City')
BEGIN
INSERT dbo.City ( CityName, Status,CityCategoryId) VALUES
(N'Default City', 0, (SELECT CityCategoryId FROM dbo.CityCategory WHERE [CityCategoryName] = N'Default City Category'))
END
GO
我有上述查询,该查询在SQL Server 2012中运行良好,但在SQL Server 2005中失败,并显示以下错误消息。
在这种情况下,不允许子查询。 仅允许标量表达式。
像这样更改您的insert
。
INSERT dbo.City
(CityName,Status,CityCategoryId)
SELECT N'Default City',0,CityCategoryId
FROM dbo.CityCategory
WHERE [CityCategoryName] = N'Default City Category'
尝试使用变量@CityCategoryId.
我不知道@CityCategoryId的类型。 您可以使用所需的数据类型。
IF NOT EXISTS (SELECT TOP 1 CityName FROM dbo.City WHERE [Name] = 'Default City')
BEGIN
Declare @CityCategoryId AS NVARCHAR(100)
SELECT @CityCategoryId = CityCategoryId FROM dbo.CityCategory
WHERE [CityCategoryName] = N'Default City Category'
INSERT dbo.City( CityName, Status, CityCategoryId)
VALUES
(N'Default City', 0, @CityCategoryId)
END
GO
尝试这样。 不确定...
IF NOT EXISTS (SELECT TOP 1 CityName FROM dbo.City WHERE [Name] = 'Default City')
BEGIN
INSERT dbo.City ( CityName, Status,CityCategoryId)
SELECT 'Default City',0, CityCategoryId FROM dbo.CityCategory WHERE [CityCategoryName] = N'Default City Category'
END
GO
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.