Sql 如何通过连接而不是使用子查询来实现这一点?
如何将下面的查询更改为使用联接而不是子查询Sql 如何通过连接而不是使用子查询来实现这一点?,sql,sql-server,tsql,Sql,Sql Server,Tsql,如何将下面的查询更改为使用联接而不是子查询 SELECT ID, Name, UnitPrice FROM Products WHERE UnitPrice < ( SELECT AVG( UnitPrice ) FROM Products ) ORDER BY UnitPrice DESC; 谢谢有一种使用join的方法,如下所示: SELECT T1.* FROM [dbo].[Table_1] AS T1 INNER JOIN ( SELECT AVG( Number )
SELECT ID, Name, UnitPrice
FROM Products
WHERE UnitPrice <
( SELECT AVG( UnitPrice ) FROM Products )
ORDER BY UnitPrice DESC;
谢谢有一种使用join的方法,如下所示:
SELECT T1.*
FROM [dbo].[Table_1] AS T1
INNER JOIN ( SELECT AVG( Number ) as Number FROM [Table_1] ) AS T2
ON T1.Number < T2.Number
ORDER BY T1.UnitPrice DESC;
否则,请使用变量存储此值您可以在连接打开时执行此操作 用CTE。 使用派生表。 辅助视图。 与助理临时表。 在分组子查询上使用join。 或者可以使用: 使用变量。 具有表格功能。 交叉应用。
但是您的qry是最清晰的解决方案。另一个选项是使用窗口函数
;with cte as (
SELECT ID
, Name
, UnitPrice
, AvgPrice = avg(UnitPrice) over (Order By (Select NULL))
FROM Products
)
Select * from cte where UnitPrice<AvgPrice
这就是你要找的吗???从[dbo].[Table_1]中选择T1..[Table_1]作为T1内部连接,从[Table_1]中选择AVG Number作为T1上的T2。Number