Використання вкладеного запиту в списку стовпців
SELECT id_catalog, (SELECT MAX(price) FROM products) FROM catalogs;
id_catalog (SELECT MAX(price) FROM products)
1 7259.00
2 7259.00
3 7259.00
Вкладений запит select max (price) from products повертає максимальнезначення ціни з таблиці products (725.00) і підставляє це значення на місцезапиту, тому запит можна представити як запит із скалярною величиною в якостістовпця
SELECT id_catalog, 7259.00 FROM catalogs;
id_catalog (SELECT MAX(price) FROM products)
1 7259.00
2 7259.00
3 7259.00
Допустимі також запити такого виду: вкладений запит повертає назву каталогу зпервинним ключем id_catalog = 1, а зовнішній запит, що складається з одногооператора select, виводить його.
SELECT (SELECT name FROM catalogs WHERE id catalog = 1);
(SELECT name FROM catalogs WHERE id_catalog = 1)
Процесори
При використанні вкладених запитів в якості аргументів вбудованих функційMySQL слід пам'ятати про необхідність розміщення вкладеного запиту в додаткові круглі дужки. У прикладі назва каталогу з первинним ключемid_catalog = 1 з таблиці catalogs передається в якості аргументу функції UPPER,яка переводить рядок у верхній регістр. При цьому використовуються подвійнікруглі дужки - одні для позначення вкладеного запиту, інші - для позначення ознаки функції.
SELECT UPPER((SELECT name FROM catalogs WHERE id_catalog=1));
UPPER((SELECT name FROM catalogs WHERE id_catalog=1));
ПРОЦЕСОРИ
Найбільше часто вкладені запити використовуються в операціях порівняння вумовах які задаються ключовими словами where, having або on. Для цьогозадіюються шість операторів порівняння ("=", "<>", "<", "<=" ">" ">="). Вкладенийзапит, який бере участь в операції порівняння, повинен повертати в якостірезультату одиничне значення.
Приклад
SELECT name FROM catalogs
WHERE id_catalog > (SELECT id_catalog FROM products WHERE id_product = 10);
name
Відеоадаптери
Жорсткіе диски
Оперативна пам’ять
SELECT name FROM catalogs
WHERE (SELECT id_catalog FROM products
WHERE id_product = 10) < id_catalog;
name
Відеоадаптери
Жорсткіе диски
Оперативна пам’ять
Повертаються назви каталогів, значення первинного ключа id_catalog для яких більше значення первинного ключа каталогу, в якому знаходиться товарнапозиція з id_product = 10.
Примітка
У прикладі показано, що вкладений запит може розташовуватися як справа так і зліва від оператора порівняння. Однак краще розташовувати його в правій частині, як це продемонстровано в першому запиті, для сумісності з іншимиСУБД, які не задовольняють стандарту SQL2, в якому було усунуто подібне обмеження.