Я хочу знать значение кода ниже, который был написан в SQL - PullRequest
0 голосов
/ 25 октября 2019

Один из коллег использовал этот запрос, я хочу знать значение внутреннего запроса на выборку (т. Е. Выбрать 1 из таблицы (: input_country_object)). Может кто-нибудь объяснить мне подробно, как это работает.

Select 
       id, 
       country_name, 
       price, 
       section, 
       population, 
       diversity 
from Country co 
where exists (
               select 1 
               from table (:input_country_object) ico 
               where co.country_name = ico.country_name
              );

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 25 октября 2019

Если вас интересует только то, что делает внутреннее выделение, то вы идете:

select 1 
from table (:input_country_object) ico 
where co.country_name = ico.country_name

Ваш запрос в основном просто выбирает значение 1, если выполняется условие where.

Так что, если есть данные для этого условия: where co.country_name = ico.country_name в таблице :input_country_object, то этот выбор просто возвращает 1.

Это вызывает часть exists (...) вашего запросачтобы вернуть true и, следовательно, выполнить первую часть вашего запроса Select id, country_name, price, section, population, diversity from Country co.

Таким образом, в целом запрос возвращает вам следующие значения:

id, country_name, price, section, population, diversity

из вашего

Country таблица,

для всех стран, которые также находятся во второй таблице

:input_country_object


:input_country_object сама по себе являетсяпеременная, которую SQL-Developer будет заполнять или которую вы должны назначить.

0 голосов
/ 25 октября 2019

Когда вы запускаете этот код, например, в TOAD, он просит вас написать tablename вместо :input_country_object

Так, когда вы пишете имя таблицы, запрос работает .

Вы можете видеть это из этого изображения: image

...