【发布时间】:2021-11-04 14:43:55
【问题描述】:
我在应用程序中遇到了旧代码。 ORDER BY 在这里不起作用。从执行计划看,ORDER BY 好像根本没有执行。
IF(1 = 1)
(
SELECT * FROM dbo.Table WHERE Column1= 'abc'
)
ELSE
(
SELECT * FROM dbo.Table
)
ORDER BY Column2
我知道我可以通过像这样重构这个查询来让它工作。 但我只是好奇为什么 ORDER BY 没有在上述查询中首先被执行。
IF(1 = 1)
BEGIN
SELECT * FROM dbo.Table WHERE Column1= 'abc' ORDER BY Column2
END
ELSE
BEGIN
SELECT * FROM dbo.Table ORDER BY Column2
END
【问题讨论】:
-
IF是逻辑流运算符,不能像这样在单个SELECT语句中使用。 -
还有,SQL Server 2005?真的吗?这 long 不支持了;以及很久以前的升级时间
标签: sql sql-server sql-server-2012