【发布时间】:2015-02-14 12:48:20
【问题描述】:
我使用 SQL Server 2012 并尝试按子查询中的名称对以下查询的结果进行排序,但总是出现 SQL 执行错误。
我在这里做错了什么或错过了什么?
我的查询:
SELECT A.EmpID,
(SELECT B.EmpID, B.LastName + ', ' + B.FirstName AS TM
FROM dbo.EmpTable AS B
WHERE B.SupEmpID = A.EmpID)
FROM dbo.EmpTable AS A
WHERE A.NTID = 'someID'
ORDER BY B.LastName + ', ' + B.FirstName
【问题讨论】:
-
假设两个名称中都没有逗号(不太可能),您可以通过不进行连接来增加使用索引的机会。当您在源列上调用用于连接/分组/排序的函数时(甚至是隐式的,例如使用连接或转换,甚至是基本数学),您会这样做,以便数据库无法使用索引来完成该部分查询,减慢它的速度(好吧,优化器有时可以解决它,但这是一个很好的首要规则)。
标签: sql sql-server select stored-procedures sql-order-by