使用具有多个条件的连接检索数据

时间:2017-11-01 10:22:49

标签: mysql

我正在尝试编写一个查询,该查询从一个表中检索数据,该表没有另一个表上的数据。

我的表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 );

注意:因为我的问题是查询速度慢。我已经通过创建索引来解决这个问题,这使得这个查询运行得很快。

感谢您的努力。

1 个答案:

答案 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
);