首页 > 解决方案 > 在一个表中查找与不同表中的其他记录没有关联的记录

问题描述

我有 3 张桌子:

list_routes
pk_route_id  route_code  route_name route_description
3              J1          IND           IND-DPS
4              J4          ADT           ADT_DPS

tbl_stu_route
pk_stu_route_id    fk_stu_cls_id   fk_route_id
2                    13               3

tbl_stu_class
pk_stu_cls_id  fk_stu_id  
 13                56

现在我想要实现的是在 MYSQL 中编写查询,它将从 list_routes 中获取我的记录,这些记录在 tbl_stu_class 中没有关联或附加,因此例如在上述场景中它应该给我输出:

pk_route_id  route_code  route_name route_description
4              J4          ADT           ADT_DPS

我使用左外连接编写了以下查询

SELECT
    a.pk_route_id,
    a.route_code,
    a.route_name,
    a.route_description
FROM
    list_routes a
left outer join tbl_stu_route b on a.pk_route_id=b.fk_route_id
left outer join tbl_stu_class c on b.fk_stu_cls_id=c.pk_stu_cls_id
where c.fk_stu_id ='56'

但输出是

pk_route_id  route_code  route_name route_description
3              J1          IND           IND-DPS

我不确定我哪里出错了。你能告诉我如何实现这一点吗?

标签: mysqlsql

解决方案


如果你想获得不存在的记录,那么只需过滤掉IS NULL

SELECT a.*
FROM list_routes a
left outer join tbl_stu_route b on a.pk_route_id=b.fk_route_id
left outer join tbl_stu_class c on b.fk_stu_cls_id=c.pk_stu_cls_id
where b.fk_route_id is null;

推荐阅读