MySQL MariaDB

Подзапросы MySQL

Подзапросы MySQL
Подзапрос - это рекурсивный запрос SQL в рамках более крупного запроса, либо подзапрос считается внутренним запросом. Напротив, внешний запрос называется запросом, который включает подзапрос. Подзапрос MySQL может быть встроен в запросы, включая SELECT, INSERT, UPDATE или DELETE. Кроме того, внутри другого подзапроса может быть вложен подзапрос. Подзапрос фразы следует заключать в квадратные скобки, где бы он ни использовался. Мы научим вас, как и когда использовать подзапрос MySQL для составления сложных запросов, и опишем идею связанного подзапроса. Откройте оболочку командной строки со своего рабочего стола и введите пароль, чтобы начать ее использовать. Нажмите Enter и продолжите.

Подзапрос в записях одной таблицы:

Создайте таблицу с именем "животные" в базе данных "данные".'Добавьте следующую запись о разных животных с разными свойствами, как показано. Получите эту запись с помощью запроса 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;

Заключение:

Вы эффективно работали с множеством подзапросов во всех приведенных выше примерах. Надеемся, теперь все ясно и чисто.

Лучшие дистрибутивы Linux для игр в 2021 году
Операционная система Linux прошла долгий путь от своего первоначального простого серверного вида. Эта ОС значительно улучшилась за последние годы и те...
Как записать и транслировать игровую сессию в Linux
В прошлом игры считались только хобби, но со временем игровая индустрия увидела огромный рост с точки зрения технологий и количества игроков. Игровая ...
Лучшие игры с отслеживанием рук
Oculus Quest недавно представил отличную идею отслеживания рук без контроллеров. С постоянно растущим числом игр и действий, которые осуществляются фо...