在SQL中,您可以像这样使用IN:
SELECT name, continent
FROM world
WHERE continent IN (
SELECT continent
FROM world
WHERE name IN ('Belize', 'Thailand') );
但我习惯看到的是这样使用IN:
SELECT column_name(s)
FROM table_name
WHERE column_name IN ('Happy','Happened','Fish');
SQL会自动将嵌套选择转换成这样的东西吗?
('Test1','Test2','Test3')
答案 0 :(得分:1)
简单的答案是否定的。事实上,你提供的两个例子甚至都不相似
首先执行第一个示例中的内部查询,然后评估IN
。
答案 1 :(得分:1)
第一个例子是子查询(嵌套查询),它将按如下方式进行评估:
它将返回一个表格,然后过滤与投影表格中的Continent
匹配的主查询。
第二个将过滤与数组值中的Continent
匹配的主表。
但是,如果第一个示例返回此结果,则结果可能相同:
column_name
---------
'Happy'
'Happened'
'Fish'
,第二个查询过滤器数组为('Happy','Happened','Fish')
。
我怀疑第二次查询更快。