登录
首页 >  数据库 >  MySQL

如何使用 SQL 查询去除 LEFT JOIN 中产生的重复记录?

时间:2024-11-22 17:25:00 165浏览 收藏

有志者,事竟成!如果你在学习数据库,那么本文《如何使用 SQL 查询去除 LEFT JOIN 中产生的重复记录?》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

如何使用 SQL 查询去除 LEFT JOIN 中产生的重复记录?

sql 查询去除重复记录

您正在处理两张表,a 表和 b 表,试图根据 a 表的数据查询不重复的结果。目前,您的查询使用了 left join,但在跟踪号不同时,它会导致重复的记录。为了解决这个问题,您可以使用以下查询:

select *
from a
left join (
  select sid, max(tracking_number)
  from b
  group by sid
) b
on a.sid = b.sid

这个查询使用 max() 函数找出每个 sid 对应的最大跟踪号。对于某些数据库,例如 sqlite 和较新版本的 mysql,您可能不需要使用该函数,而只需要在子查询中选择跟踪号即可。

如果您需要使用该函数,并且您的数据库不支持它,则可以使用以下查询:

select
    a.*,
    b.tracking_number,
    b.is_cancel 
from a
left join (
    select max(id) id, sid
    from b
    group by sid
) x on a.sid = x.sid
left join b on x.id = b.id

这个查询使用 max(id) 找出具有最大 id 的记录的 id。然后,它使用该 id 从 b 表中选择其他信息。

终于介绍完啦!小伙伴们,这篇关于《如何使用 SQL 查询去除 LEFT JOIN 中产生的重复记录?》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布数据库相关知识,快来关注吧!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>