Sql 将表链接到自身并获取关系ID
我希望获得与其他帐户具有相同id的帐户,然后最终确定它与哪个帐户相关(例如,请参见下表) 表结构Sql 将表链接到自身并获取关系ID,sql,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_
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\u帐户id。我很确定这涉及到将表内部连接到自身,但我仍然不确定如何获取src\u帐户id。您可以尝试一下。使用子查询获取
标志='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'
[结果]:
| AccountID | id2 | AccountID |
|-----------|-----|-----------|
| 456 | 1 | 123 |
| 789 | 1 | 123 |
| 999 | 2 | 888 |
在
id2
和flag
上自动加入表
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';
是的,这非常有效,并给出与下面的查询相同的结果。很高兴知道我也可以作为子查询进行内部连接。工作非常完美,完全符合我的要求-非常感谢!