Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL:如何自引用内部联接的输出?_Sql_Sql Server - Fatal编程技术网

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乐意帮忙!