Вкладений запит завжди є частиною|часткою| умови пошуку в пропозиції|реченні| WHERE| або HAVING|. Раніше були розглянуті|розглядувати| прості умови пошуку, які можуть використовуватися в цих пропозиціях|реченнях|. Крім того, в SQL| є|наявний| наступні|такі| умови пошуку у вкладеному запиті.
Порівняння з|із| результатом вкладеного запиту (=, <> <, <= >, >=). Порівнює значення вираження|виразу| з|із| одним значенням, поверненим вкладеним запитом. Ця перевірка нагадує просте порівняння.
Порівняння з|із| результатом вкладеного запиту є модифікованою формою простого порівняння. Значення вираження|виразу| порівнюється із|із| значенням, поверненим вкладеним запитом, і якщо умова порівняння виконується, то перевірка повертає значення TRUE|. Ця перевірка використовується для порівняння значення з|із| рядка, що перевіряється, з|із| одним значенням, поверненим вкладеним запитом, як показано першому прикладі|зразку|.
Перевірка на приналежність результатам вкладеного запиту (IN|). Перевірка на приналежність результатам вкладеного запиту (ключове|джерельне| слово IN|) є видозміненою формою простий перевірки на членство в безлічі|множині|.
Перевіряемий_вираз| [NOT|] IN| вкладений запит |
Одне значення порівнюється із|із| стовпцем даних, повернених вкладеним запитом, і якщо це значення дорівнює одному із значень в стовпці, перевірка повертає TRUE|. Дана перевірка використовується, коли необхідно порівняти значення з|із| рядка, що перевіряється, з|із| безліччю|множиною| значень, повернених вкладеним запитом. Наприклад, вивести всю інформацію про студентів, що вчаться в групах з назвами|, що починаються|зачинають| на букву|літеру| (А(:
Перевірка на існування (EXISTS|). В результаті|внаслідок| перевірки на існування (ключове|джерельне| слово EXISTS|) можна з'ясувати, чи міститься|утримується| в таблиці результатів вкладеного запиту хоч би|хоча би| один рядок. Аналогічною простий перевірки не існує. Перевірка на існування використовується лише|тільки| з|із| вкладеними запитами.
[NOT|] EXISTS| вкладений запит |
Наприклад, вивести прізвища студентів, які в 1-му семестрі здали|складали| хота б| одну дисципліну:
Багатократне|багаторазове| порівняння (ANY| і ALL|). У перевірці IN| з'ясовується, чи не рівне деяке значення одному із значень, що містяться|утримуються| в стовпці результатів вкладеного запиту. У SQL| є|наявний| два різновиди багатократного|багаторазового| порівняння – ANY| і ALL|, що розширюють попередню перевірку до рівня інших операторів порівняння. У обох перевірках деяке значення порівнюється із|із| стовпцем даних, поверненим вкладеним запитом.
Перевірка ANY|. У перевірці ANY| використовується один з шести операторів порівняння (=, <> <, <= >, >=) для того, щоб порівняти одне значення, що перевіряється, із|із| стовпцем даних, поверненим вкладеним запитом. Значення, що перевіряється, по черзі порівнюється з|із| кожним значенням, що міститься|утримується| в стовпці. Якщо будь-яке з цих порівнянь дає результат TRUE|, то перевірка ANY| повертає значення TRUE|.
Наприклад, вивести список прізвищ студентів, що отримали|одержували| в першому семестрі хоч би|хоча би| одну відмінну оцінку.
Якщо вкладений запит в перевірці ANY| не створює жодного рядка результату або якщо результати містять|утримують| значення NULL|, то в різних СУБД перевірка ANY| може виконуватися по-різному. У стандарті ANSI/ISO для мови|язика| SQL| містяться|утримуються| детальні|докладні| правила, що визначають результати перевірки ANY|, коли значення, що перевіряється, порівнюється із|із| стовпцем результатів вкладеного запиту:
1. якщо вкладений запит повертає порожній|пустий| стовпець результатів, то перевірка ANY| має значення FALSE| (в результаті|внаслідок| виконання вкладеного запиту не набуто жодного значення, для якого виконувалася б умова порівняння).
2. якщо операція порівняння має значення TRUE| хоч би|хоча би| для одного значення в стовпці, то перевірка ANY| повертає значення TRUE| (є|наявний| деяке значення, отримане|одержувати| вкладеним запитом, для якого умова порівняння виконується).
3. якщо операція порівняння має значення FALSE| для всіх значень в стовпці, то перевірка ANY| повертає значення FALSE| (можна стверджувати, що ні для одного значення, поверненого вкладеним запитом, умова порівняння не виконується);
4. якщо операція порівняння не має значення TRUE| ні для одного значення в стовпці, але|та| в нім є|наявний| одне або декілька значень NULL| те перевірка ANY| повертає результат NULL|. (У цій ситуації неможливо але|та| з|із| визначеністю затверджувати|стверджувати|, чи існує отримане|одержувати| вкладеним запитом значення, для якого виконується умова порівняння; можливо, існує, а може і ні – все залежить від "справжніх|даних|" значень невідомих даних.)
Перевірка ALL|. У перевірці ALL|, як і в перевірці ANY|, використовується один з шести операторів (=, <> <, <= >, >=) для порівняння одного значення, що перевіряється, із|із| стовпцем даних, поверненим вкладеним запитом. Значення, що перевіряється, по черзі порівнюється з|із| кожним значенням, що міститься|утримується| в стовпці. Якщо всі порівняння дають результат TRUE|, то перевірка ALL| повертає значення TRUE|.
Наприклад, вивести список прізвищ студентів, що отримали|одержували| в першому семестрі лише|тільки| задовільні оцінки.
Якщо вкладений запит в перевірці ALL| не повертає жодного рядка або якщо результати запиту містять|утримують| значення NULL|, то в різних СУБД перевірка ALL| може виконуватися по-різному. У стандарті ANSI/ISO для мови|язика| SQL| містяться|утримуються| детальні|докладні| правила, що визначають результати перевірки ALL|, коли значення, що перевіряється, порівнюється із|із| стовпцем результатів вкладеного запиту:
1. якщо вкладений запит повертає порожній|пустий| стовпець результатів, то перевірка ALL| має значення TRUE|. Вважається|лічить|, що умова порівняння виконується, навіть якщо результати вкладеного запиту відсутні.
2. якщо операція порівняння дає результат TRUE| для кожного значення в стовпці, то перевірка ALL| повертає значення TRUE|. Умова порівняння виконується для кожного значення, отриманого|одержувати| вкладеним запитом.
3. якщо операція порівняння дає результат FALSE| для якого-небудь|будь-якого| значення в стовпці, то перевірка ALL| повертає значення FALSE|. У цьому, випадку можна стверджувати, що умова пошуку виконується не для кожного значення, отриманого|одержувати| вкладеним запитом.
4. якщо операція порівняння не дає результат FALSE| ні для одного значення в стовпці, але|та| для одного або декількох значень дає результат NULL|, то перевірка ALL| повертає значення NULL|. У цій ситуації не можна з|із| визначеністю затверджувати|стверджувати|, чи для всіх значень, отриманих|одержувати| вкладеним запитом, справедлива умова порівняння; можливо, для всіх, а може і ні – все залежить від "справжніх|даних|" значень невідомих даних.