MySQL - 过滤子查询中的联合

时间:2017-11-10 18:16:16

标签: mysql

我能够运行以下内容:

SELECT * FROM t1 WHERE t1.id NOT IN (SELECT id FROM t2);

以及:

SELECT * FROM (SELECT id FROM t2 UNION SELECT id FROM t3);

但当我尝试运行以下内容时,MySQL会抱怨:

SELECT * FROM t1 WHERE t1.id NOT IN (SELECT id FROM t2 UNION SELECT id FROM t3);

错误是"意外' SELECT'"为第三个选择。 我的语法有问题吗?这不可能吗?如果这是唯一的方法,我可以使用EXISTS进行重写。

1 个答案:

答案 0 :(得分:1)

它们不是您查询的错误:

SQL Fiddle

MySQL 5.6架构设置

create table t1 ( id int );
create table t2 ( id int );
create table t3 ( id int );

insert into t1 values (1);
insert into t2 values (2);
insert into t3 values (3);

查询1

SELECT * FROM t1 WHERE t1.id NOT IN
(SELECT id FROM t2 UNION SELECT id FROM t3)

<强> Results

| id |
|----|
|  1 |