我有以下表格,即test1和test2, 我想显示test1中不存在的记录,这些记录不存在于test2中。SQL Server 2008 R2:LEFT JOIN为NULL且不存在多个条件
表1:
CREATE TABLE test1
(
cola int,
colb varchar(10)
);
表2:
CREATE TABLE test2
(
cola int,
colb varchar(10),
colc varchar(10)
);
插入记录:
INSERT INTO test1 VALUES(1,'a'),(2,'b'),(3,'c');
INSERT INTO test2 VALUES(5,'a','W1'),(2,'b','Z1'),(6,'c','X1');
查询1:使用LEFT JOIN IS NULL和在WHERE子句2个条件
SELECT t1.*
FROM test1 t1
LEFT JOIN test2 t2
ON t1.cola = t2.cola
WHERE t2.cola IS NULL AND t2.colc IN ('Z1','X1')
输出:
cola colb
--------------
查询2:使用LEFT JOIN IS NULL和两个条件中ON子句
SELECT t1.*
FROM test1 t1
LEFT JOIN test2 t2
ON t1.cola = t2.cola AND t2.colc IN ('Z1','X1')
WHERE t2.cola IS NULL
输出:
cola colb
--------------
1 a
3 c
查询3:使用不在
SELECT t1.*
FROM test1 t1
WHERE t1.cola NOT IN (SELECT cola FROM test2 WHERE colc IN ('Z1','X1'))
输出:
cola colb
------------
1 a
3 c
问题:
- 有什么不对查询1?
- 如果我们有两个表中有多个条件,哪一个是真的?
- 哪一个最适合大数据检索? (2查询或查询3)
香面包车VIT伤心:左加入不等于在哪里 –