Подзапрос

Функция

Определение подзапроса.

Спецификация
 
< подзапрос >::=
Синтаксические правила
  1. Если < подзапрос > указан в предикате, отличном от < предиката существования >, то он должен содержать ровно один столбец.

  2. Максимально допустимый уровень вложенности SQL-запросов равен 32.

    table (table (table (table auto))) limit 2;
  3. В подзапросах поддерживается сортировка ORDER BY.

    select i from (select i,rownum as j from test1 order by i) where j between 2 and 4 order by i;
  4. В подзапросах поддерживается конструкция FETCH FIRST (в том числе, одновременно с ORDER BY).

    select sname,
     (select pname from p, sp where s.snum = sp.snum and p.pnum = sp.pnum order by qty desc fetch first 1)
    from s;

    Такой подзапрос должен возвращать один столбец и максимум одну строку для каждой комбинации записей таблиц, стоящих во FROM (в данном примере – для каждой записи таблицы P).

Примеры
SELECT * FROM Person AS P
  WHERE EXISTS (SELECT * FROM Auto
  WHERE PersonID =P.PersonID);
  Table Person AS P WHERE EXISTS (table Auto WHERE PersonID =P.PersonID);

SELECT * FROM Person WHERE Salary =(SELECT MAX(Salary) FROM Person);

select count(*) from auto where (make, year) in (select 'FORD', 70);
table person WHERE Salary =(SELECT MAX(Salary) FROM Person);

select * from (select (select count(*)from sp where s.snum=sp.snum) n from s);