簡體   English   中英

在UNION語句的子查詢B中引用子查詢A的結果?

[英]Referencing Results of Subquery A in Subquery B of UNION Statement?

我正在嘗試解決一個問題,該問題需要我根據同一表中其他行的值從表中獲取行(我在輸出中也需要)。 我正在尋找做以下等效的東西:

SELECT a.id,a.col1,a.col2 FROM tbl a WHERE col1 = @col
UNION
SELECT b.id,b.col1,b.col2 FROM tbl b WHERE b.col2 IN (SELECT a.col1)
UNION
SELECT c.id,c.col1,c.col2 FROM tbl c WHERE c.col1 IN (SELECT b.col1)

要么

(SELECT id,col1,col2 FROM tbl WHERE col1 = @val) a
UNION
SELECT id,col1,col2 FROM tbl b WHERE b.col2 IN (SELECT col1 FROM a)
UNION
SELECT id,col1,col2 FROM tbl c WHERE c.col1 IN (SELECT col1 FROM b)

但是這兩個都是不允許的。 有什么方法可以做到這一點,避免在擴展時避免繁瑣的遞歸語句,例如下面的功能語句:

SELECT * FROM #tbl WHERE col1 = @val
UNION
SELECT * FROM #tbl WHERE col2 = (SELECT col1 FROM #tbl WHERE col1 = @val)
UNION
SELECT * FROM #tbl WHERE col1 = (SELECT col1 FROM #tbl WHERE col2 = (SELECT col1 FROM #tbl WHERE col1 = @val))

小提琴

這是你想要的嗎?

with cte as (
      SELECT a.id, a.col1, a.col2
      FROM tbl a
      WHERE col1 = @col
      UNION ALL
      SELECT b.id, b.col1, b.col2
      FROM tbl b JOIN
           cte
           ON b.col2 = cte.col1
     )
select *
from cte;

您可能希望在外部查詢中select distinct ,或者在內部查詢中select distinct union ”。

如果您的關系具有周期,則查詢本身可能會更復雜。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM