选择在T1中但不在T2中的id

时间:2012-10-06 10:53:22

标签: mysql join

我有两张桌子和一张桌子。数据如下。

create table t1 (id int, name varchar(10));

create table t2 (id int, name varchar(10), t1id int);

insert into t1 values
(1,'value 1'),
(2,'value 2'),
(3,'value 3'),
(4,'value 3');

insert into t2 values
(1,'value 1',1),
(2,'value 2',1),
(3,'value 3',1),
(4,'value 3',2);

我想要的是T1(id)中的id列表,但不是T2(t1id)。

输出

3,4作为t1.id(3,4)在T2(t1id)中不存在。

Raw Data

2 个答案:

答案 0 :(得分:1)

SELECT id
  FROM t1
 WHERE NOT EXISTS (SELECT NULL
                     FROM t2
                    WHERE t2.t1id = t1.id)

答案 1 :(得分:0)

为什么我在问问题后总能得到解决方案?

select id FROM t1 WHERE id NOT IN (select distinct(t1id) FROM t2);

Demo