SQLсервер в Linux -самостоятельное освоение пакета

       

Подзапрос с ключевым словом IN



Листинг 4.60. Подзапрос с ключевым словом IN

booktown=# SELECT title FROM books

booktown-# WHERE authorjd IN (SELECT id FROM authors

booktown(# WHERE last_name - '"[A-E]');

title

2001: A Space Odyssey

Franklin in the Dark

Goodnight Moon

Little Women

The Velveteen Rabbit

Perl Cookbook

(6 rows)

Благодаря ключевому слову IN запрос находит в таблице данные о книгах нескольких авторов, коды которых были выбраны подзапросом. Хотя ключевое сло-ю IN позволяет проверить значение по нескольким записям, количество сравниваемых полей должно быть одинаковым.

Если вы хотите, чтобы секция IN сравнивала несколько полей, сгруппируйте их имена в круглых скобках в секции WHERE непосредственно перед IN. Сгруппированные поля должны соответствовать полям целевого списка как по количеству, так и по типу.

В листинге4.61 приведен подзапрос к таблице editions, который группирует поле i sbn с целочисленной константой 0 для всех книг в бумажной обложке (type=' р'). Возвращаемые подзапросом записи сравниваются с полем isbn и полем stock таблицы stock с использованием ключевого слова IN. В результате команда SELECT выбирает данные обо всех книгах в бумажной обложке, отсутствующих на складе.



Содержание раздела