我正在使用mssql并且在使用子查询时遇到问题.真正的查询非常复杂,但它具有与此相同的结构:
select
customerName,
customerId,
(
select count(*)
from Purchases
where Purchases.customerId=customerData.customerId
) as numberTransactions
from customerData
Run Code Online (Sandbox Code Playgroud)
我想要做的是按交易次数排序表,但是当我使用时
order by numberTransactions
Run Code Online (Sandbox Code Playgroud)
它告诉我没有这样的领域.是否有可能做到这一点?我应该使用某种特殊的关键字,例如this,或self?
使用字段编号,在这种情况下:
order by 3
Run Code Online (Sandbox Code Playgroud)
有时您必须与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
Run Code Online (Sandbox Code Playgroud)
此外,使用JOIN的解决方案是正确的.查看查询计划,SQL Server应为这两种解决方案提供相同的计划.
| 归档时间: |
|
| 查看次数: |
9552 次 |
| 最近记录: |