在select中使用select时,SQL IN关键字如何工作?

时间:2014-02-26 20:41:51

标签: sql select

在SQL中,您可以像这样使用IN:

SELECT name, continent
FROM world
WHERE continent IN (
    SELECT continent
    FROM world
    WHERE name IN ('Belize', 'Thailand') );

source

但我习惯看到的是这样使用IN:

SELECT column_name(s)
FROM table_name
WHERE column_name IN ('Happy','Happened','Fish');

SQL会自动将嵌套选择转换成这样的东西吗?

('Test1','Test2','Test3')

2 个答案:

答案 0 :(得分:1)

简单的答案是否定的。事实上,你提供的两个例子甚至都不相似 首先执行第一个示例中的内部查询,然后评估IN

答案 1 :(得分:1)

第一个例子是子查询(嵌套查询),它将按如下方式进行评估:

enter image description here

它将返回一个表格,然后过滤与投影表格中的Continent匹配的主查询

第二个将过滤与数组值中的Continent匹配的主表。

但是,如果第一个示例返回此结果,则结果可能相同:

column_name
---------
'Happy'
'Happened'
'Fish'

,第二个查询过滤器数组为('Happy','Happened','Fish')

我怀疑第二次查询更快。