SQL:如何自引用内部联接的输出?
我希望能够对查询的输出运行自内部联接。 在最简单的情况下,执行自内部联接很容易:SQL:如何自引用内部联接的输出?,sql,sql-server,Sql,Sql Server,我希望能够对查询的输出运行自内部联接。 在最简单的情况下,执行自内部联接很容易: SELECT * FROM A a1 INNER JOIN A a2 ON a1.key = a2.key 问题是,我需要对另一个内部联接的输出执行这个自内部联接。差不多 SELECT * FROM DATA.A A INNER JOIN DATA.B B ON A.key = B.key output /* output is the dataset I am interested in */ INN
SELECT *
FROM A a1 INNER JOIN
A a2 ON
a1.key = a2.key
问题是,我需要对另一个内部联接的输出执行这个自内部联接。差不多
SELECT *
FROM DATA.A A INNER JOIN
DATA.B B
ON A.key = B.key output /* output is the dataset I am interested in */
INNER JOIN
(FROM DATA.A A INNER JOIN
DATA.B B
ON A.key = B.key output2) /* same code to get output, so that I can self reference */
ON
OUTPUT.key_alt = OUTPUT2.key_alt
有可能吗?我无法在数据库中存储输出。在SQL Server中:
我喜欢用a来做这类事情。在我看来,它使事情更具可读性
with cte as (
select *
from data.A as A
inner join data.B as B
on A.key = B.key
)
select ...
from cte as o
inner join cte as i
on o.key = i.key
不过,您可以通过标准子查询来实现这一点
select o.*
from (
select *
from data.A as A
inner join data.B as B
on A.key = B.key
) as o
inner join (
select *
from data.A as A
inner join data.B as B
on A.key = B.key
) as i
on o.key = i.key
mysql还是sql server?您可以做的是解析输出select语句,以便轻松阅读。在这个阶段,我想不出你想要什么来更新这个问题。Microsoft SQL(SQL server)和MySQL是不同的产品。你的帖子中不能同时有两个标签。所以本质上我就是这么做的D@Noobie这看起来像是您试图用psuedo代码执行的操作。如果你分享更多关于你实际问题的细节,可能还有其他更简单或更合适的方法。@Noobie乐意帮忙!