Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在不使用子查询的情况下高效地编写以下查询_Sql - Fatal编程技术网

Sql 如何在不使用子查询的情况下高效地编写以下查询

Sql 如何在不使用子查询的情况下高效地编写以下查询,sql,Sql,表:A -------------------------- id alias1 -------------------------- 1 user1 2 user2 3 user3 -------------------------- 表:B -------------------------- id parent -------------------------- 1 user2 -------------------------- 预期产出

表:A

--------------------------
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' )