同一 SQL 中使用的 SQL 结果

问题描述 投票:0回答:1

我只有一张桌子

cp_id id 价值
112 5 好的
3369 112 好的
10 8 好的
3368 10 好的

如果我想要 id '5' 的信息(我只有一行),我正在苦苦挣扎

SELECT *  FROM table WHERE id= '5'

但我也需要找出相关信息。 结果,我想要的:

cp_id id 价值
112 5 好的
3369 112 好的

我尝试过:

SELECT *
FROM table 
WHERE cp_id = (SELECT cp_id FROM table where id = 5)
UNION
SELECT *
FROM table
WHERE id = 5

但这不正确

sql
1个回答
0
投票

您可以像这样使用横向交叉连接:

WITH    -- S a m p l e   D a t a :
    tbl ( CP_ID, ID, VALUE ) AS
        ( Select  112,   5,  'ok'  From Dual Union ALl 
          Select 3369, 112,  'ok'  From Dual Union ALl 
          Select   20,   8,  'ok'  From Dual Union ALl 
          Select 3368,   10, 'ok'  From Dual 
        )
--      S Q L :
Select t.*
From
tbl t
Inner Join ( Select     t.CP_ID, t1.CP_ID "CP_ID_2"
              From    tbl t
              Cross Join Lateral ( Select * From tbl Where ID = t.CP_ID ) t1
           ) t1 ON( t.CP_ID IN(t1.CP_ID, t1.CP_ID_2) )
/*    R e s u l t :
     CP_ID         ID VA
---------- ---------- --
       112          5 ok
      3369        112 ok    */
© www.soinside.com 2019 - 2024. All rights reserved.