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 中产生的重复记录?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号