MySQL跨表条件查询:获取表A中符合规则的id_product及date记录
MySQL跨表查询满足指定条件的记录
解决方案SQL
SELECT a.id_product, a.date FROM tableA a LEFT JOIN tableB b ON a.id_product = b.id_product WHERE b.id_product IS NULL OR a.date <> b.date;
逻辑拆解
- 用
LEFT JOIN关联表A和表B,确保表A的所有记录都被保留 b.id_product IS NULL:匹配表A中id_product不存在于表B的记录(对应规则1)a.date <> b.date:匹配id_product存在于表B,但表A与表B的date值不同的记录(对应规则2)
结合示例数据验证
表A原始数据:
id_product,date 3, 2022-07-19 4, 2022-07-20 5, 2022-07-20
表B原始数据:
id_product,date 3, 2022-07-20 5, 2022-07-20
执行SQL后的正确结果:
id_product,date 3, 2022-07-19 4, 2022-07-20
注:你提供的期望结果中id_product=3的date值为
2022-07-20是笔误,该值属于表B中的记录,表A中符合条件的对应记录是3, 2022-07-19
内容的提问来源于stack exchange,提问作者Sylar
相关产品推荐
相关产品推荐

