Содержание
Подзапросы - это запросы, вложенные в другой. Они позволяют вам отделить часть предложения и предоставляют более удобочитаемую альтернативу операциям, которые могут потребовать сложных объединений и объединений. Подзапросы в MySQL могут возвращать значение, строку, столбец или таблицу данных.
Используйте подзапросы для создания более читаемых и компактных предложений (Thinkstock Images / Comstock / Getty Images)
Синтаксис
Основной синтаксис подзапроса следующий:
SELECT * FROM table1, ГДЕ столбец A = (ВЫБРАТЬ столбец B ИЗ таблицы2) GO
Подзапросы должны состоять из операторов «SELECT», «INSERT», «UPDATE», «DELETE», «SET» или «DO», и вы не можете изменить таблицу и одновременно использовать ее в подзапросе. Подзапросы обычно используются в правой части предложения WHERE, которое может содержать любой из сравнительных и логических операторов, таких как = (равно), <> (отличается), <= (меньше или равно),> = или «МЕЖДУ» (между двумя значениями), «НЕ», «И» и «ИЛИ». Вы также можете использовать ключевые слова «DISTINCT», «GROUP BY», «ORDER BY» и «LIMIT» и даже в сочетании с операторами «JOIN». Помимо подробных ограничений, есть несколько ограничений при написании подзапросов в MySQL.
Нет даже ограничения на количество подзапросов, сделанных в предложении. Вы можете найти больше информации о подзапросах в справочном руководстве MySQL (см. Раздел «Ресурсы»).
пример
Предположим, у вас есть две таблицы: одна с именем и фамилией, адресом и почтовым индексом членов списка рассылки, а другая с городами, штатами и почтовым индексом. Чтобы найти имена членов, живущих в Бразилии, можно использовать несколько «избранных» предложений. Первый будет искать CEPs Бразилиа:
ВЫБЕРИТЕ ИЗ КОДОВ ГДЕ состояние = "БРАЗИЛИЯ" GO
Затем используйте «select» для каждого найденного почтового индекса:
ВЫБЕРИТЕ имя, фамилию ОТ адреса ГДЕ cep = [codecep] GO
Этот метод занимает много времени и легко допустить ошибки. Потерять почтовый индекс легко, особенно если их слишком много. Более простой способ выполнить эту задачу - использовать первое предложение как подзапрос во втором:
ВЫБЕРИТЕ имя, фамилию ОТ адресов, ГДЕ cep = (ВЫБЕРИТЕ СЕП ИЗ КОДОВ, ГДЕ состояние = "БРАЗИЛИЯ") GO
Этот запрос покажет всех участников вашего списка рассылки, которые живут в Бразилии.