Підручник із прикладів MySQL SubQuery

Anonim

Що таке підзапити?

Підзапит - це запит вибору, який міститься всередині іншого запиту. Внутрішній запит вибору зазвичай використовується для визначення результатів зовнішнього запиту вибору.

Давайте розглянемо синтаксис підзапиту -

Поширеною скаргою клієнтів у відеотеці MyFlix є низька кількість назв фільмів. Керівництво хоче придбати фільми для категорії, яка має найменшу кількість назв.

Ви можете використовувати такий запит, як

SELECT category_name FROM categories WHERE category_id =( SELECT MIN(category_id) from movies);

Це дає результат

Давайте подивимось, як працює цей запит

Вище наведено форму підзапиту рядка . У таких підзапитах внутрішній запит може дати лише ОДИН результат. Допустимими операторами при роботі з підзапитами рядків є [=,>, =, <=,,! =,]

Давайте подивимось на інший приклад,

Припустимо, ви хочете імена та номери телефонів членів людей, які взяли фільм у прокат і ще не повернули їх. Отримавши імена та телефонний номер, ви телефонуєте їм для нагадування. Ви можете використовувати такий запит, як

SELECT full_names,contact_number FROM members WHERE membership_number IN (SELECT membership_number FROM movierentals WHERE return_date IS NULL );

Давайте подивимось, як працює цей запит

У цьому випадку внутрішній запит повертає більше одного результату. Вище наведено тип T -підзапиту y.

Дотепер ми бачили два запити, давайте тепер побачимо приклад потрійного запиту !!!

Припустимо, керівництво хоче нагородити самого високооплачуваного члена.

Ми можемо виконати такий запит, як

Select full_names From members WHERE membership_number = (SELECT membership_number FROM payments WHERE amount_paid = (SELECT MAX(amount_paid) FROM payments));

Наведений вище запит дає такий результат -

Підзапити проти приєднання!

У порівнянні з Joins, підзапити прості у використанні та легко читаються. Вони не такі складні, як Joins

Тому вони часто використовуються початківцями SQL.

Але підзапити мають проблеми з продуктивністю. Використання об’єднання замість підзапиту часом може збільшити продуктивність до 500 разів.

Отримавши вибір, рекомендується використовувати JOIN над підзапитом.

Підзапити слід використовувати як резервне рішення лише тоді, коли ви не можете використовувати операцію JOIN для досягнення вищезазначеного

Резюме

  • Підзапити - це вбудовані запити всередині іншого запиту. Вбудований запит відомий як внутрішній запит, а запит контейнера - зовнішній.
  • Підзапити прості у використанні, пропонують велику гнучкість і можуть бути легко розбиті на окремі логічні компоненти, що складають запит, що дуже корисно при тестуванні та налагодженні запитів.
  • MySQL підтримує три типи підзапитів, скалярні, рядкові та табличні.
  • Скалярні підзапити повертають лише один рядок і один стовпець.
  • Підзапити рядків повертають лише один рядок, але можуть мати більше одного стовпця.
  • Підзапити таблиці можуть повертати кілька рядків, а також стовпці.
  • Підзапити також можуть бути використані в запитах INSERT, UPDATE та DELETE.
  • Що стосується одержання даних із декількох таблиць, для вирішення проблем із продуктивністю настійно рекомендується використовувати JOIN замість підзапитів. Підзапити слід використовувати лише з поважної причини.