Съдържание
Подзапитванията са заявки, поставени в друга. Те ви позволяват да отделите част от изречението и да осигурите по-разбираема алтернатива на операциите, които могат да изискват сложни присъединявания и синдикати. Подзаявките в MySQL могат да върнат стойност, ред, колона или таблица с данни.
Използвайте подзапитвания, за да създадете по-четливи и компактни изречения (Снимки на Thinkstock / Comstock / Getty Images)
Синтаксисът
Основният синтаксис на подзапитване е както следва:
SELECT * FROM таблица1 WHERE columnA = (SELECT колонаB от таблица2) GO
Подзаявки трябва да се състоят от "SELECT", "INSERT", "UPDATE", "DELETE", "SET" или "DO" оператор и не можете да променяте таблицата и да я използвате в подзаявката едновременно. Подзаявките обикновено се използват от дясната страна на клаузата WHERE, която може да съдържа някой от сравнителните и логически оператори, като = (равен), <> (различен), <= (по-малък или равен),> = или "BETWEEN" (между две стойности), "NOT", "AND" и "OR". Можете също да използвате ключовите думи „DISTINCT“, „GROUP BY“, „ORDER BY“ и „LIMIT“ и дори да се комбинират с отчети „JOIN“. Освен подробните ограничения, при писането на подзаявки в MySQL има малко ограничения.
Няма дори ограничение за броя на подзаявките, направени в рамките на едно изречение. Можете да намерите повече информация за подзаявките в справочника за MySQL (вижте секцията "Ресурси").
пример
Да предположим, че имате две таблици: едната с име и фамилия, адрес и пощенски код на членове на пощенски списък и един с градове, щати и пощенски код. За да намерите имената на членовете, живеещи в Бразилия, могат да се използват няколко изречения за избор. Първият ще търси CEP на Бразилия:
SELECT FROM кодове WHERE състояние = "BRASILIA" GO
След това използвайте „изберете“ за всеки намерен пощенски код:
SELECT име, фамилно име FROM адреси WHERE cep = [codecep] GO
Този метод отнема време и е лесен за допускане на грешки. Лесно е да загубите пощенски код, особено ако има твърде много от тях. По-лесен начин да изпълните тази задача е да използвате първото изречение като подзапитване във втората:
SELECT име, фамилия FROM адреси WHERE cep = (SELECT cep FROM кодове WHERE състояние = "BRASILIA") GO
Тази заявка ще покаже всички членове на вашия пощенски списък, които живеят в Бразилия.