我需要从两个表中获取数据
例如:我有表test1,test2。 Test1是父表。我需要获取数据是在test1中存在而不是在test2中。我该如何为此编写查询?
select id from test1, test2 where test1.id not in (test2.id);
答案 0 :(得分:4)
执行LEFT OUTER JOIN:这将对表1中的每一行找到table2中的相应行 - 但是当没有找到值时,LEFT OUTER将使它返回table2值为NULL的行。然后,只询问table2字段为NULL的那些字段(因此不存在)。
select id from test1
LEFT OUTER JOIN test2
ON test1.id = test2.id
where test2.id IS NULL
您也可以尝试使用子查询,但这不会更好(通常更糟):
SELECT id FROM test1
WHERE id NOT IN (select id from test2)
答案 1 :(得分:3)
SELECT id
FROM test1
WHERE id NOT IN
(
SELECT id
FROM test2
)
答案 2 :(得分:1)
您可以执行子查询,但也可以使用左连接:
SELECT test1.*
FROM test1
LEFT JOIN test2
ON test1.id = test2.id
WHERE test2.id IS NULL