SQLite подзапрос
Подзапросов или вложенных запросов или внутренний запрос встраивается в запросе ИНЕКЕ внутри другого SQLite запроса.
Использование подзапроса возвращает данные будут использоваться в основном запросе в качестве условия для дальнейшего ограничения данных, которые будут загружены.
Подзапросы можно использовать с SELECT, INSERT, UPDATE и DELETE заявления могут сопровождаться операторы используют такие как =, <,>,> =, <=, IN, BETWEEN нравится.
Ниже приведен подзапрос несколько правил, которые необходимо соблюдать:
Подзапросы должен быть заключен в скобки.
Суб-запрос SELECT, раздел может иметь только один столбец, если несколько столбцов в основном запросе, выбранного сравнения столбца подзапроса.
ORDER BY не может быть использован в подзапросе, хотя основной запрос может использовать ORDER BY. Вы можете использовать GROUP BY в подзапросах, действует так же, как ORDER BY.
Подзапрос возвращает более одной строки, может использоваться только с оператором многозначного, таких как оператор IN.
Между оператором, не может быть использован с подзапросов, Однако, между могут быть использованы в пределах подзапросов.
ЗЕЬЕСТ подзапроса
Подзапрос обычно используется с ЗЕЬЕСТ. Базовый синтаксис выглядит следующим образом:
ВЫБОР column_name [, имя_столбца] FROM table1 [, table2] ГДЕ column_name ОПЕРАТОР (SELECT имя_столбца [, имя_столбца] FROM table1 [, table2] [WHERE])
примеров
Предположим, что таблица Компания имеет следующие записи:
ID ИМЯ ВОЗРАСТ АДРЕС ЗАРПЛАТА ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000,0 3 Teddy 23 Норвегия 20000,0 4 Mark 25 Рич-Mond 65000,0 5 David 27 Texas 85000,0 6 Ким 22 Юго-зал 45000,0 7 Джеймс 24 Хьюстон 10000,0
Теперь давайте рассмотрим ЗЕЬЕСТ подзапроса:
SQLite> SELECT * ОТ КОМПАНИИ WHERE ID IN (SELECT ID ОТ КОМПАНИИ ГДЕ ЗАРПЛАТА> 45000);
Это дает следующие результаты:
ID ИМЯ ВОЗРАСТ АДРЕС ЗАРПЛАТА ---------- ---------- ---------- ---------- ---------- 4 Mark 25 Рич-Mond 65000,0 5 David 27 Texas 85000,0
INSERT заявление подзапрос
Подзапросов также может быть использован с INSERT заявления. ВСТАВИТЬ оператор использует вложенный запрос для возврата данных в другую таблицу. В подзапроса выбранные данные могут быть любой символ, дата, или цифровая функция модификации.
Базовый синтаксис выглядит следующим образом:
INSERT INTO table_name [(column1 [, column2])] SELECT [* | column1 [, column2] FROM table1 [, table2] [WHERE VALUE ОПЕРАТОР]
примеров
Пусть COMPANY_BKP О компании Структура таблицы и подобное, и могут использовать один и тот же CREATE TABLE для создания, просто изменили название таблицы COMPANY_BKP. Теперь скопируйте всю таблицу компании, чтобы COMPANY_BKP, синтаксис выглядит следующим образом:
SQLite> INSERT INTO COMPANY_BKP SELECT * FROM КОМПАНИИ WHERE ID IN (SELECT ID От компании);
UPDATE заявление подзапрос
Подзапросы могут использоваться с утверждением UPDATE. При использовании оператор UPDATE подзапроса, один или несколько столбцов обновляются в таблице.
Базовый синтаксис выглядит следующим образом:
UPDATE таблица SET имя_столбца = новое_значение [WHERE ОПЕРАТОР [VALUE] (SELECT COLUMN_NAME FROM table_name) [ГДЕ)]
примеров
Предположим, что мы имеем COMPANY_BKP таблицу, резервное копирование таблицы компании.
Следующие примеры таблицы КОМПАНИ всех возрастов, чем или равно 27 клиентов ЗАРПЛАТЫ обновленный оригинальный 0.50 раз:
SQLite> UPDATE КОМПАНИЯ SET ЗАРПЛАТА = ЗАРПЛАТА * 0,50 ГДЕ AGE IN (SELECT Возраст от COMPANY_BKP ГДЕ AGE> = 27);
Это будет влиять на две строки последней компании записей в таблице следующим образом:
ID ИМЯ ВОЗРАСТ АДРЕС ЗАРПЛАТА ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 10000.0 2 Allen 25 Texas 15000,0 3 Teddy 23 Норвегия 20000,0 4 Mark 25 Рич-Mond 65000,0 5 David 27 Texas 42500,0 6 Ким 22 Юго-зал 45000,0 7 Джеймс 24 Хьюстон 10000,0
ВЕЬЕТЕ подзапрос
Подзапросы могут использоваться с ВЕЬЕТЕ, так же как и другие операторы, как уже упоминалось выше.
Базовый синтаксис выглядит следующим образом:
DELETE FROM table_name [WHERE ОПЕРАТОР [VALUE] (SELECT COLUMN_NAME FROM table_name) [ГДЕ)]
примеров
Предположим, что мы имеем COMPANY_BKP таблицу, резервное копирование таблицы компании.
Следующие примеры удалить все записи о клиентах больше или равно 27 лет Таблица КОМПАНИ:
SQLite> DELETE FROM КОМПАНИИ ГДЕ AGE IN (SELECT Возраст от COMPANY_BKP ГДЕ ВОЗРАСТ> 27);
Это будет влиять на две строки последней компании записей в таблице следующим образом:
ID ИМЯ ВОЗРАСТ АДРЕС ЗАРПЛАТА ---------- ---------- ---------- ---------- ---------- 2 Allen 25 Texas 15000,0 3 Teddy 23 Норвегия 20000,0 4 Mark 25 Рич-Mond 65000,0 5 David 27 Texas 42500,0 6 Ким 22 Юго-зал 45000,0 7 Джеймс 24 Хьюстон 10000,0