Зміст
Підзапити - це запити, вкладені всередину іншого. Вони дозволяють відокремити частину речення і забезпечити більш читану альтернативу операціям, які можуть вимагати складних об'єднань і об'єднань. Підзапити в MySQL можуть повертати значення, рядок, стовпець або таблицю даних.
Використовуйте підзапити, щоб створити більш чисті та компактні пропозиції (Зображення Thinkstock / Comstock / Getty Images)
Синтаксис
Основний синтаксис підзапиту:
SELECT * FROM таблиця1 WHERE columnA = (SELECT columnB ВІД таблиці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 FROM коди WHERE стан = "BRASILIA" GO
Потім використовуйте "вибір" для кожного знайденого поштового індексу:
Ім'я SELECT, прізвище FROM адреси WHERE cep = [codecep] GO
Цей метод є трудомістким і легким для помилок. Легко втратити поштовий індекс, особливо якщо їх занадто багато. Більш простий спосіб виконати це завдання - використовувати перше речення як підзапит у другому:
SELECT ім'я, прізвище FROM адреси WHERE cep = (SELECT cep FROM коди WHERE стан = "BRASILIA") GO
Цей запит покаже всім членам вашого списку розсилки, які проживають у Бразилії.