【发布时间】:2020-12-29 06:00:18
【问题描述】:
我希望能够在我的选择中重复使用子查询,而不必再次全部输入。有没有办法做到这一点?
例如,选择中的第一项是返回名称的子查询。
在第二个选择项中,我想重复使用“NAME”子查询,而不必再次输入。
我查看了 CTE,但看不到您如何为 where 子句传递参数。在此示例中,我需要从子查询中的主查询访问 T1.ID,但我没有看到使用 CTE 的方法。
SELECT
(SELECT NAME FROM TABLE2 T2 WHERE T2.ID=T1.ID) AS NAME,
(SELECT STATE FROM TABLE3 T3 WHERE T3.NAME=(SELECT NAME FROM TABLE2 T2 WHERE T2.ID=T1.ID)) AS STATE
FROM TABLE1 T1
【问题讨论】:
-
你不能。它是一个相关子查询。
-
为什么你不能
joint2在t1上使用ID然后t3在t2上使用name,然后在SELECT t2.Name, t3.State上? -
@Gordon:我倾向于你的答案。其他答案意味着我必须重组整个查询,我不确定这是否可能。我的实际查询很复杂,我只是为这个问题做了一个简单的例子。
标签: sql tsql subquery lateral-join