包含多个 SELECT 语句的 SQL IN 语句

Posted

技术标签:

【中文标题】包含多个 SELECT 语句的 SQL IN 语句【英文标题】:SQL IN statement with multiple SELECT statements in it 【发布时间】:2015-03-16 17:35:10 【问题描述】:

我的问题与此类似。

Check if column value exists in another column in SQL

然而,在我的例子中,IN 语句中最多有五个 select 语句。它看起来像这样:

SELECT Criterion1 FROM tblFilter WHERE Criterion1 IN (SELECT Criterion2 FROM tblFilter, SELECT Criterion3 FROM tblFilter)

然而,当我在 vb.net 上运行它时,我从这个查询中得到了语法错误。那么,什么是正确的呢?

【问题讨论】:

【参考方案1】:

对于 Access SQL,您需要使用如下构造:

SELECT ... 
FROM tblFilter 
WHERE Criterion1 IN (SELECT Criterion2 FROM tblFilter) 
    OR Criterion1 IN (SELECT Criterion3 FROM tblFilter)

【讨论】:

完美运行!太棒了!【参考方案2】:

从 tblFilter 中选择标准 1 WHERE 标准 1 在 ( 从 tblFilter 中选择 Criterion2)

或 标准 1 在 ( 从 tblFilter 中选择标准 3 )

【讨论】:

【参考方案3】:

试试这个:

SELECT Criterion1 FROM tblFilter WHERE Criterion1 IN (SELECT Criterion2 FROM tblFilter UNION SELECT Criterion3 FROM tblFilte

UNION 将您的两个选择语句组合在一起,但它们必须返回相同的元素计数(在您的语句中为 1)和相同的类型。

编辑: 试试这个:

SELECT Criterion1 FROM tblFilter t1, tblFilter t2, tblFilter t3 WHERE t1.Criterion1 = t2.Criterion2 OR t1.Criterion2 = t3.Criterion3

【讨论】:

Access SQL 在子查询中不支持UNION [ALL]

以上是关于包含多个 SELECT 语句的 SQL IN 语句的主要内容,如果未能解决你的问题,请参考以下文章

sql语句中in的用法

access 的select语句如何like和in用在一起

在 Oracle Sql 中的 Select 语句中根据条件排除和包含列标题

[讲解]sql except和intersect运算符(比拟两个或多个select语句的结果并前去非重复值)

SQL 语句中的infind_in_setlike的区别

SQL 组合多个 SELECT 语句