Подзапросы и EXISTS
Синтаксис
SELECT ... WHERE EXISTS <Table subquery>
Описание
Подзапросы с использованием ключевого слова EXISTS вернут true, если подзапрос вернёт любые строки. И наоборот, подзапросы с использованием ключевого слова NOT EXISTS вернут true, только если подзапрос не вернёт ни одной строки из таблицы.
Подзапросы EXISTS игнорируют столбцы, указанные в выражении SELECT подзапроса, так как они не имеют значения. Например,
SELECT col1 FROM t1 WHERE EXISTS (SELECT * FROM t2);
и
SELECT col1 FROM t1 WHERE EXISTS (SELECT col2 FROM t2);
производят идентичные результаты.
Примеры
CREATE TABLE sq1 (num TINYINT); CREATE TABLE sq2 (num2 TINYINT); INSERT INTO sq1 VALUES(100); INSERT INTO sq2 VALUES(40),(50),(60); SELECT * FROM sq1 WHERE EXISTS (SELECT * FROM sq2 WHERE num2>50); +------+ | num | +------+ | 100 | +------+ SELECT * FROM sq1 WHERE NOT EXISTS (SELECT * FROM sq2 GROUP BY num2 HAVING MIN(num2)=40); Empty set (0.00 sec)
Содержимое, воспроизведённое на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется предварительно компанией MariaDB. Мнения, информация и мнения, выраженные в данном содержании, не обязательно отражают точку зрения MariaDB или любой другой стороны.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/subqueries-and-exists/