mysql使用left join时,右表数据有重复数据的处理

  • LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。 此时右表 (table_name2)右表有通过 on 关键字过滤后没有数据或只有一条数据时是没有问题的。
  • 我要说的是如果右表 (table_name2)出现重复数据(业务上完全重复)该怎么处理。
    1. 当右表 (table_name2)通过 on 关键字过滤后出现重复数据,此时查出的数据就会是,右表数据*重复的数据+右表其他条件数据,和我们所需数据的条数不同。
    2. 我的解决方法是,先根据过滤字段分组查询一次右表 (table_name2),把相同的数据过滤掉,然后把这个结果当成右表在进行关联
      前面脑补 
      LEFT JOIN (SELECT MODEL_CODE,MODEL_NAME from tm_model GROUP BY MODEL_CODE) tm on tav.model_code = tm.MODEL_CODE 
      后面脑补
      

猜你喜欢

转载自my.oschina.net/u/3805335/blog/2980308