将表链接到自身并获取关系ID

时间:2018-08-03 21:13:36

标签: sql

我想获得与其他帐户具有相同ID的帐户,然后最终找出与之相关的帐户(例如,请参见下表)。

表结构

Account ID | flag | id2

123 | Y | 1

456 | N | 1

789 | N | 1

888 | Y | 2

999 | N | 2

我想要的结果

Account ID | id2 | src_account_id

456 | 1 | 123

789 | 1 | 123

999 | 2 | 888

这是我的查询

Select account_id, id2, src_account_id
FROM table1
WHERE id2 IN (Select id2 FROM table1 WHERE flag = 'Y')

但是我对如何获取src_account_id感到困惑。我相当确定它涉及对表本身进行内部联接,但是我仍然不确定如何获取src_account_id。

2 个答案:

答案 0 :(得分:0)

您可以尝试一下。使用子查询获取flag = 'Y'结果集。然后自我加入

SELECT  t1.AccountID,t1.id2,t2.AccountID
FROM T t1 inner join (
  SELECT id2,AccountID
  FROM T
  WHERE flag = 'Y' 
 ) t2 on t1.id2 = t2.id2
 WHERE t1.flag = 'N'

sqlfiddle

[结果]

| AccountID | id2 | AccountID |
|-----------|-----|-----------|
|       456 |   1 |       123 |
|       789 |   1 |       123 |
|       999 |   2 |       888 |

答案 1 :(得分:0)

自行加入id2flag上的表。

SELECT t1."Account ID",
       t1.id2,
       t2."Account ID" src_account_id
       FROM elbat t1
            INNER JOIN elbat t2
                       ON t2.id2 = t1.id2
                          AND t1.flag = 'N'
                          AND t2.flag = 'Y';