关联关系表查询时去除已经被删除的关联数据

 

今天在查询一张关联关系表的时候,由于关联关系是一个对象关联其他三种对象,在查询的时候需要校验这三种对象的存在性,即把关联的三种对象中原表数据已经被删除的记录在查询时去除。由于是查询记录的筛选,所以判断条件需要在where语句中,但是由于需要判断关联的对象是三种对象的哪一种,在where语句判断的时候使用case when语句对表中的类别字段type进行判断:

case
when type == 'a'
then (select id from table_a where id = id and is_deleted = 0)
when type == 'b'
then (select id from table_b where id = id and is_deleted = 0)
when type == 'c'
then (select id from table_c where id = id and is_deleted = 0)
end  

当获取到在原表的存在的数据id后,再对获取到的id进行判断,如果对应的数据已经被删除,那么获取到的id就是null,如果没有被删除,就是一条正常的数据(不为null),然后判断结果is not null即可。

posted @ 2021-04-20 15:29  果冻dd  阅读(446)  评论(0)    收藏  举报