我想知道以下用sql编写的代码的含义

时间:2019-10-25 07:32:11

标签: sql oracle oracle-sqldeveloper

一位同事使用了该查询,我想知道内部选择查询的含义(即,从表(:input_country_object)中选择1。谁能详细解释一下它的工作原理。

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 个答案:

答案 0 :(得分:1)

如果您只关心内部选择的功能,那么您可以进行以下操作:

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

如果满足where条件,则查询基本上只选择值1

因此,如果有以下条件的数据: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将填充的变量,或者您必须分配。

答案 1 :(得分:0)

运行此代码时在TOAD上,它要求您写tablename而不是:input_country_object

因此,当您写表名称时,查询有效

您可以从这张图片中看到它:image