【发布时间】:2015-01-14 00:33:08
【问题描述】:
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 中失败并显示以下错误消息。
在这种情况下不允许子查询。只允许使用标量表达式。
【问题讨论】:
-
如果 N'Default City', 0 是硬编码值,在选择语句本身中使用它,但删除关键字 VALUES
-
此功能是在 SQL Server 2008 中引入的。因此,在低于此的版本中,您需要声明变量并将值分配给变量并在 INSERT 语句中使用它。
标签: sql-server tsql sql-server-2005