使用不能使用JOIN重写的子查询编写的查询示例?

时间:2017-11-01 21:43:41

标签: sql join subquery

我的一些同事一直在您可以简单地使用联接的地方使用子查询。利弊部分讨论in this SO post

他们的大多数查询可以简化为以下模式:

SELECT T1.a, (SELECT T2.b FROM T2 WHERE T2.a = T1.a )
FROM T1

可以重写为:

SELECT T1.a, T2.b
FROM T1 
LEFT JOIN T2
ON T1.a = T2.a

一些很棒的SOer可以给我一个例子,其中子查询可用于实现无法使用连接重写的算法吗?

背景故事:我发现JOIN更易于阅读和管理。使用子查询编写的SQL查询驱动我(我的潜意识)坚果!我试图找到一个不恨他们的理由!

1 个答案:

答案 0 :(得分:1)

虽然您可以构造一个没有子查询的等效查询,但它比join更复杂:

SELECT T1.a, (SELECT SUM(T2.b) FROM T2 WHERE T2.a <= T1.a )
FROM T1;