Подзапрос используется для возврата данных, которые будут использоваться в основном запросе, в качестве условия для дальнейшего ограничения данных, подлежащих извлечению.
Подзапросы могут использоваться с операторами SELECT, INSERT, UPDATE
и DELETE
вместе с операторами, такими как =, <,>,> =, <=, IN, BETWEEN
и т. д.
Существует несколько правил, которым должны следовать подзапросы:
- Подзапросы должны быть заключены в круглые скобки.
- Подзапрос может иметь только один столбец в предложении
SELECT
, если только несколько столбцов не находятся в основном запросе для подзапроса для сравнения его выбранных столбцов. ORDER BY
нельзя использовать в подзапросе, хотя основной запрос может использоватьORDER BY. GROUP BY
может использоваться для выполнения той же функции, что иORDER BY
в подзапросе.- Подзапросы, возвращающие более одной строки, могут использоваться только с несколькими операторами значений, такими как оператор
IN
. - Оператор
BETWEEN
не может использоваться с подзапросом; однакоBETWEEN
можно использовать в подзапросе.
Подзапросы с инструкцией SELECT
Подзапросы чаще всего используются с оператором SELECT
. Основной синтаксис выглядит следующим образом:
SELECT column_name [, column_name ]
FROM table1 [, table2 ]
WHERE column_name OPERATOR
(SELECT column_name [, column_name ]
FROM table1 [, table2 ]
[WHERE])
Подзапросы с инструкцией INSERT
Подзапросы могут также использоваться с операторами INSERT
. Оператор INSERT
использует данные, возвращаемые из подзапроса, для вставки в другую таблицу. Выбранные данные в подзапросе могут быть изменены с помощью любой функции символа, даты или числа.
INSERT INTO table_name [ (column1 [, column2 ]) ]
SELECT [ *|column1 [, column2 ]
FROM table1 [, table2 ]
[ WHERE VALUE OPERATOR ]
Подзапросы с инструкцией UPDATE
Подзапрос может использоваться в сочетании с оператором UPDATE
. Либо один или несколько столбцов в таблице могут быть обновлены при использовании подзапроса с помощью инструкции UPDATE
.
UPDATE table
SET column_name = new_value
[ WHERE OPERATOR [ VALUE ]
(SELECT COLUMN_NAME
FROM TABLE_NAME)
[ WHERE) ]
Подзапросы с инструкцией DELETE
Подзапрос может использоваться в сочетании с оператором DELETE
, как и с любыми другими утверждениями, упомянутыми выше.
DELETE FROM TABLE_NAME
[ WHERE OPERATOR [ VALUE ]
(SELECT COLUMN_NAME
FROM TABLE_NAME)
[ WHERE) ]
0 комментариев