我正在尝试编写一个查询,该查询从一个表中检索数据,该表没有另一个表上的数据。
我的表A有值
ID StudentID CLASSID
1 1 2
2 2 3
3 3 4
4 4 5
表B,其值为
ID StudentID CLASSID
1 1 2
2 2 3
我正在尝试从表A返回ID为3,4的值,这在表B中不可用。
我试过的查询是
SELECT *
FROM A AS a
WHERE NOT EXISTS
(
SELECT *
FROM B AS b
WHERE a.student_id = b.student_id
AND a.CLASSID = b.CLASSID
);
注意:因为我的问题是查询速度慢。我已经通过创建索引来解决这个问题,这使得这个查询运行得很快。
感谢您的努力。
答案 0 :(得分:1)
使用LEFT OUTER JOIN
SELECT TableA.* FROM TableA
LEFT OUTER JOIN TableB
ON TableA.ID = TableB.ID
WHERE TableB.ID IS null
使用NOT IN
SELECT * FROM TableA
WHERE TableA.ID NOT IN ( SELECT ID FROM TableB)
使用NO EXISTS
SELECT *
FROM tableA a
WHERE NOT EXISTS
(
SELECT 1
FROM tableB b
WHERE a.studentsID = b.studentsID
AND a.CLASSID = b.CLASSID
);