Подзапрос в записях одной таблицы:
Создайте таблицу с именем "животные" в базе данных "данные".'Добавьте следующую запись о разных животных с разными свойствами, как показано. Получите эту запись с помощью запроса SELECT следующим образом:
>> ВЫБРАТЬ * ИЗ данных.животные;
Пример 01:
Получим ограниченные записи этой таблицы с помощью подзапросов. Используя приведенный ниже запрос, мы знаем, что подзапрос будет выполнен первым, а его выходные данные будут использоваться в основном запросе в качестве входных данных. Подзапрос просто извлекает возраст, при котором цена животного составляет 2500. Возраст животного у которого цена 2500 - 4 года в таблице. Основной запрос выберет все записи таблицы, возраст которых больше 4, а результат приведен ниже.
>> ВЫБРАТЬ * ИЗ данных.животные ГДЕ Возраст> (ВЫБРАТЬ ВОЗРАСТ ИЗ данных.животные ГДЕ Цена = '2500');
Пример 02:
Давайте использовать одну и ту же таблицу в разных ситуациях. В этом примере мы будем использовать некоторую функцию вместо предложения WHERE в подзапросе. Мы взяли среднее значение всех цен на животных. Средняя цена будет 3189. По основному запросу будут выбраны все записи о животных, цена которых превышает 3189. Вы получите следующий результат.
>> ВЫБРАТЬ * ИЗ данных.животные ГДЕ Цена> (ВЫБЕРИТЕ СРЕДНЮЮ (ЦЕНУ) ИЗ данных.животные);
Пример 03:
Давайте использовать предложение IN в основном запросе SELECT. Прежде всего, подзапрос получит цены больше 2500. После этого основной запрос выберет все записи таблицы животные, цена которых лежит в результате подзапроса.
>> ВЫБРАТЬ * ИЗ данных.животные ГДЕ Цена В (ВЫБЕРИТЕ ЦЕНУ ИЗ данных.животные ГДЕ Цена> 2500);
Пример 04:
Мы использовали подзапрос для получения имени животного, где цена 7000. Поскольку это животное - корова, поэтому в основном запросе будет возвращено имя «корова». В основном запросе все записи будут извлечены из таблицы, где имя животного - «корова».'Поскольку у нас есть только две записи для животного' корова ', поэтому мы получаем следующий результат.
>> ВЫБРАТЬ * ИЗ данных.животные ГДЕ Имя = (ВЫБЕРИТЕ имя ИЗ данных.животные ГДЕ Цена = '7000');
Подзапрос в нескольких записях таблиц:
Предположим, что в вашей базе данных есть две таблицы ниже, «ученик» и «учитель». Давайте попробуем несколько примеров подзапросов с использованием этих двух таблиц.
>> ВЫБРАТЬ * ИЗ данных.ученик;>> ВЫБРАТЬ * ИЗ данных.учитель;
Пример 01:
Мы будем извлекать данные из одной таблицы с помощью подзапроса и использовать их в качестве входных данных для основного запроса. Это означает, что эти две таблицы могут как-то связаны. В приведенном ниже примере мы использовали подзапрос для получения имени ученика из таблицы «ученик», где имя учителя - «Самина».'Этот запрос вернет' Samina 'в основную таблицу запросов' учитель.'Главный запрос затем выберет все записи, связанные с именем учителя' Samina.'Поскольку у нас есть две записи для этого имени, поэтому мы получили такой результат.
>> ВЫБРАТЬ * ИЗ данных.учитель ГДЕ TeachName = (ВЫБЕРИТЕ TeachName ИЗ данных.студент ГДЕ TeachName = 'Samina');
Пример 02:
Чтобы разработать подзапрос в случае разных таблиц, попробуйте этот пример. У нас есть подзапрос, который извлекает имя учителя из таблицы student. Имя должно содержать букву i в любой позиции. Это означает, что все имена в столбце TeachName, содержащие 'i' в своем значении, будут выбраны и возвращены в основной запрос. Основной запрос выберет все записи из таблицы 'учитель', где имя учителя находится в выходных данных, возвращаемых подзапросом. Поскольку подзапрос вернул 4 имени учителей, поэтому у нас будет запись всех этих имен, находящихся в таблице «учитель».'
>> ВЫБРАТЬ * ИЗ данных.учитель ГДЕ TeachName IN (ВЫБЕРИТЕ TeachName ИЗ данных.студент ГДЕ TeachName НРАВИТСЯ '% i%');
Пример 03:
Рассмотрим две таблицы ниже, «порядок» и «порядок1».
>> ВЫБРАТЬ * ИЗ данных.заказывать;>> ВЫБРАТЬ * ИЗ данных.order1;
Давайте попробуем предложение ANY в этом примере, чтобы разработать подзапрос. Подзапрос выберет id из таблицы order1, где в столбце Status указано значение Unpaid.'Id' может быть больше 1. Это означает, что в основной запрос будет возвращено более одного значения, чтобы получить результаты "порядка" таблицы. В этом случае можно использовать любой идентификатор. У нас есть следующий результат для этого запроса.
>> ВЫБРАТЬ Товар, Продажи, идентификатор ИЗ данных.порядок ГДЕ id = ЛЮБОЙ (ВЫБРАТЬ идентификатор ИЗ данных.order1 WHERE Status = «Неоплачено»);
Пример 04:
Предположим, у вас есть указанные ниже данные в таблице order1 перед применением любого запроса.
>> ВЫБРАТЬ * ИЗ данных.order1;
Давайте применим запрос в запросе, чтобы удалить некоторые записи из таблицы 'order1'. Во-первых, подзапрос выберет значение «Статус» из таблицы «порядок», где элемент - «Книга.'Подзапрос возвращает' Paid 'в качестве значения. Теперь основной запрос удалит строки из таблицы 'order1', где значение столбца 'Status' равно 'Paid.'
>> УДАЛИТЬ ИЗ данных.order1 WHERE Status = (ВЫБРАТЬ статус ИЗ данных.заказ WHERE Item = 'Book');
После проверки у нас теперь остались следующие записи в таблице order1 после выполнения запроса.
>> ВЫБРАТЬ * ИЗ данных.order1;
Заключение:
Вы эффективно работали с множеством подзапросов во всех приведенных выше примерах. Надеемся, теперь все ясно и чисто.