我正在使用mssql并且在使用子查询时遇到问题.真正的查询非常复杂,但它具有与此相同的结构:
select customerName, customerId, ( select count(*) from Purchases where Purchases.customerId=customerData.customerId ) as numberTransactions from customerData
我想要做的是按交易次数排序表,但是当我使用时
order by numberTransactions
它告诉我没有这样的领域.是否有可能做到这一点?我应该使用某种特殊的关键字,例如this
,或self
?
使用字段编号,在这种情况下:
order by 3
有时您必须与SQL的语法(预期的子句范围)搏斗
SELECT * FROM ( select customerName, customerId, ( select count(*) from Purchases where Purchases.customerId=customerData.customerId ) as numberTransactions from customerData ) as sub order by sub.numberTransactions
此外,使用JOIN的解决方案是正确的.查看查询计划,SQL Server应为这两种解决方案提供相同的计划.