美文网首页mysql
Mysql语法(7)— 左外连接妙用(找到A表存在,B表不存在的

Mysql语法(7)— 左外连接妙用(找到A表存在,B表不存在的

作者: 小胖学编程 | 来源:发表于2022-10-08 21:18 被阅读0次

背景:定时任务删除库中一些没有消耗的广告数据。目前是有两张表:
A表:某个业务的送审记录表(小表);
B表:全量的消耗记录表(大表);

要删除的数据:

  1. 在A表中且在B表中,但是B表的消耗小于某个值;
    或者
  2. 在A表中且没有在B表中;

如果要满足条件2,单纯的使用mysql语法不太容易实现,我们可以利用左外链接的特性(左向外联接的结果集包括 LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值 )。来找到A表存在但是B表不存在的数据。

image.png
select 
  A.x_id
from 
  A 
LEFT JOIN B ON A.x_id=B.x_id
where B.cost <= 0 or B.x_id is null

较为复杂的查询:

image.png
select 
   A1.x_id
   from
   (select x_id from A where dt=xx group by x_id) A1
LEFT JOIN (select x_id from B where p_date in (xx,yy) group by x_id having sum(cost)>0)  B1
ON A1.x_id=B1.x_id
where B1.x_id is null

相关文章

  • Mysql语法(7)— 左外连接妙用(找到A表存在,B表不存在的

    背景:定时任务删除库中一些没有消耗的广告数据。目前是有两张表:A表:某个业务的送审记录表(小表);B表:全量的消耗...

  • Mysql中的连接

    知识点:交叉连接内连接外连接:左外连接、右外连接 以下实验涉及到两张表,表a和表b如下 交叉连接 对两张表进行笛卡...

  • 链接查询

    内连接: 基本语法: 左表 [inner] join 右表 on 左表.字段 = 右表.字段;...

  • mybatis使用left join的注意事项

    场景: 两张表 表A和表B 表A作为主表 左外链接表B的时候,在给出指定条件的时候,因为采用外连接的方式,所以只要...

  • MYSQL的JOIN中ON和WHERE的区别

    LEFT JOIN 左外连接:左表中的数据全部出现,所以右表的列中可能为NULL。 MYSQL语句:a LEFT ...

  • 创建表、插入数据、更新数据

    常见创建表语法 根据当前表创建新表 新表不存在 新表存在 插入数据 更新数据 1.不同表的修改 2.表的自连接更新...

  • mysql

    Mysql 内连接、外连接 创建一个学生表 创建一个成绩表 给 两张表插入数据 内连接 左连接select * f...

  • SQL/spark SQL三表左外连接

    近期有一个场景需要用到三表左外连接,以mysql为例,将实现方法记录如下。假设有如下三张表: 实现三表左外连接:

  • Oracle左外连接、右外连接、完全外连接以及(+)号用法

    一、准备工作 oracle连接分为:左外连接:左表不加限制,保留左表的数据,匹配右表,右表没有匹配到的行中的列显示...

  • mysql---连接查询

    连接查询(多表查询)内连接外连接---左外连接---右外连接 前提条件:多张表之间要存在相关联的字段 内连接 特征...

网友评论

    本文标题:Mysql语法(7)— 左外连接妙用(找到A表存在,B表不存在的

    本文链接:https://www.haomeiwen.com/subject/aspwartx.html