去年年初,我参与了一个使用Oracle数据库的项目,并引入了一种新的查询格式,您可以在其中查询上一个查询的结果。只有几个星期我们一直在帮助这个项目,所以我不记得究竟是怎么写的。但是,它类似于下面的大纲。请注意我认为的所有查询都是在一个存储过程中编写的,只有一个过程。请原谅我粗鲁的格式,但我不记得事情是如何让我发现查询查询的能力非常棒,并且在一个语句中没有所有嵌套选择。
e.g。 SP:X
select firstName from users where active = true;
select authors from books where authorFirstName in (previous select);
有关这种查询方式的任何指导都可以帮助我研究这一点,我将非常感激,因为我想了解更多内容并更多地遵循格式。
答案 0 :(得分:2)
您可以使用SQL with子句为子查询指定名称,然后使用该名称。示例:
答案 1 :(得分:1)
您提到的表单是subquery
,
may be
用join
写的(取决于查询和子查询):
select firstName from users where active = true;
select authors from books where authorFirstName in (previous select);
等于:
select books.authors
from books
join users on books.authorFirstName =users.firstName
where users.active = true;
或等于另一个子查询:
select authors
from books
where exists (select firstName
from users
where
books.authorFirstName =users.firstName
and active = true);
您也可以使用with
声明:
with cte as (
select firstName from users where active = true)
select authors from books where authorFirstName in (select firtsname from cte);
和其他形式......
答案 2 :(得分:1)
这称为子查询。 语法通常如下:
select authors from books where authorFirstName in (select firstName from users where active = true);
与内联视图类似:
select authors from books join
(select firstName from users where active = true) users2 on users2.firstname = authors.authorfirstname;
和条款
with (select firstName from users where active = true) as users2
select authors from books where authorsfirstname = users2.firstname;
所有人都有不同的优势和用途。