Подзаявки, или вложени заявки в MySQL
Вложени заявки са исканията, които се намират в рамките на други въпроси, като SELECT, INSERT, UPDATE или DELETE. Освен това, MySQL подзаявки могат да бъдат разположени в други подзаявки.
Като илюстративен пример, нека разгледаме следния вложени заявка, която връща служители, намиращи се в офиса в САЩ.
- подзаявка връща всички офиси кодове офиси, разположени в САЩ
- Външният заявката избира последното и първото име на служителя, чийто офис е кода на резултатите, върнати от подзаявка.
Можете да използвате подзаявка навсякъде в израз и той трябва да бъде поставен в скоби.
MySQL подзаявка в състояние, при
Подзаявка с операторите за сравнение
Можете да използвате = сравнителните оператори,>, <и т.д. чтобы сравнить одно значение возвращенное подзапросом с выражением в условии WHERE. Например, следующий запрос вернет пользователя с максимальным платежом из таблицы payments.
Сега нека да намерите потребители, чиито плащания са повече от средното заплащане в подзаявка.
На първо място, ние използваме подзаявка да брои средната плащане с помощта на обобщаваща функция AVG. След това, през външната заявка, ние ще поискаме плащания, които са по-големи от средната плащането се върнат от подзаявка.
Резултатът ще бъде
оператори Вложени заявка в, а не в
Ако подзаявка връща повече от една стойност, можете да използвате и да не е в операторите в WHERE състояние.
Вижте таблицата по-долу.
Нека не използвате в оператор, намираме хора, които не са подредени всички продукти.
Сега ние се този резултат
Подзаявка с съществува и НЕ СЪЩЕСТВУВА
Когато се използва с подзаявка или оператори съществува не съществува, така че подзаявка връща булева стойност: вярно или невярно. В този случай той действа като вложени заявка за проверка на съществуване.
В следващия пример ще изберем списък с потребители, които имат най-малко един ред с общи продажби от повече от 10 хиляди.
На първо място, ние ще създадем заявка, която ще провери дали има най-малко един ред с общи продажби от над 10 000.
Той ще се върне към нас тук е резултат от
Заявка за връщане 6 реда с резултатите от умножението на колоните, за да просто да се TRUE-неверните, нека да използваме подзаявка:
резултатът е толкова
Подзаявка MySQL, предоставена в ОТ
При използване на вложените в ОТ клауза от заявка, резултатът върнати от този подзаявка е таблица, която се нарича производно.
Следната заявка установи максималната, минималната и средната броя на елементите в реда,
Резултатът ще бъде следното
Моля, имайте предвид, че под-заявка връща резултатен набор, който се използва като производна таблица на външната заявка.