sql - 如何在选择子句中重用子查询?
问题描述
我希望能够在我的选择中重用子查询,而不必再次全部输入。有没有办法做到这一点?
例如,选择中的第一项是返回 NAME 的子查询。
在第二个选择项中,我想重用“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
解决方案
这看起来像是横向连接的典型用例。在 TSQL 中,您可以使用outer apply
:
select t2.name, t3.state
from table1 t1
outer apply (select * from table2 t2 where t2.id = t1.id ) t2
outer apply (select * from table3 t3 where t3.name = t2.name) t3
推荐阅读
- postgresql - 查询数据类型为 jsonb 的表的列 - Postgres
- jmeter - 我如何在 j 仪表上的 csv 文件配置中的每次迭代中按顺序获取每一行的数据
- c - 这两条指令在以下函数中做了什么?
- node.js - Binance - 未发送强制参数“类型”、为空/null 或格式错误
- reactjs - fab fa-linkedin 在 reactjs 中不起作用
- azure-data-factory - 数据流接收器在每个文件夹位置生成零字节文件
- android - 以编程方式连接到之前在 Android Q 中连接的 Wifi
- javascript - 如何以角度从表单构建器中删除字段“prevPwd”
- python - 我的 Python Prime Number Finder 代码有什么问题?
- c++ - 将 stl 算法应用于多维向量(向量
>)