Sql 如何在不使用子查询的情况下高效地编写以下查询
表:ASql 如何在不使用子查询的情况下高效地编写以下查询,sql,Sql,表:A -------------------------- id alias1 -------------------------- 1 user1 2 user2 3 user3 -------------------------- 表:B -------------------------- id parent -------------------------- 1 user2 -------------------------- 预期产出
--------------------------
id alias1
--------------------------
1 user1
2 user2
3 user3
--------------------------
表:B
--------------------------
id parent
--------------------------
1 user2
--------------------------
预期产出:
--------------------------
id alias1
--------------------------
1 user1
2 user2
--------------------------
sql:
如何高效地编写上述查询。我想获取子级和父级的列表(如果存在)(1)如果您的预期输出如您所声称的那样,则SELECT ID不会剪切它
(2) 通过将查询重写为SELECT。。。联合选择
(3) 用适当的联接和投影替换其余部分中的子查询,以消除这些子查询。我看不到任何逻辑。请编辑您的问题并描述您希望查询执行的操作。
SELECT Id
FROM A
WHERE alias1 IN ((SELECT alias1 FROM A
WHERE alias1 = (SELECT b.parent
FROM A a
LEFT JOIN B b ON b.id = a.id
WHERE a.alias1 = 'user1')),
'user1' )