你可以在where子句中有多个子查询吗?

问题描述:

我没有一个这样的例子,但我只是想知道,如果这样的事情是在任何情况下有效:你可以在where子句中有多个子查询吗?

SELECT somefield 
FROM sometable 
WHERE something1 IN (SELECT somefield2 FROM sometable2) 
    AND something2 IN (SELECT somefield3 FROM sometable3) 

是。您的语法需要修正:

SELECT somefield 
FROM sometable 
WHERE something1 IN (SELECT somefield2 FROM sometable2)       
AND something2 IN (SELECT somefield3 FROM sometable3) 

在一个字 - 是的。无论where条款是否具有in条件,您都可以在条件中创建尽可能多的条件。

+0

但请记住一件事。虽然可以尽可能多地存在条件/子查询,但您可能会遇到性能问题。 – Leptonator

+0

@Leptonator视图不会影响性能,除非它们在大多数RDBMS中无法实现 –

+0

@ThomasG - 刚刚删除了对视图的引用。 – Leptonator