summertie 2024-10-12 04:17 采纳率: 25%
浏览 10
已结题

mysql中如何按日期筛选重复记录?

mysql中如何按日期筛选重复记录?
数据库表detail, 表中有出发日期start, 到达日期end字段, 明细中有多行数据,数据行1,数据行 2, 行1中的出发日期,截止日期和行2中的出发日期,截止日期一致, 如何筛选出这2条一致的数据?
  • 写回答

2条回答 默认 最新

  • 香格里辣 2024-10-12 04:18
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    要按日期筛选重复记录,你可以使用MySQL的GROUP BYHAVING子句。具体来说,你可以先按照日期对数据进行分组,然后检查哪些分组有不止一条记录,这样就可以找出那些具有相同出发日期和到达日期的记录。

    假设你的表名为detail,并且你想要基于出发日期(start)和到达日期(end)来筛选重复记录,你可以使用以下的SQL查询来实现这个目的:

    SELECT start, end, COUNT(*) as count_duplicates
    FROM detail
    GROUP BY start, end
    HAVING count_duplicates > 1;
    

    上述查询首先按startend字段对数据进行分组。然后,通过HAVING子句筛选出那些组内记录数大于1的组,即那些有重复记录的组。结果会展示出发日期、到达日期以及重复记录的数量。

    如果你想得到具体的重复记录,而不仅仅是哪些日期有重复,你可以使用一个稍微复杂的查询结合子查询或者JOIN来实现。这里给出一个基于子查询的例子:

    SELECT d1.*
    FROM detail d1
    WHERE EXISTS (
        SELECT 1 FROM detail d2
        WHERE d1.id != d2.id AND d1.start = d2.start AND d1.end = d2.end
    );
    

    这个查询会返回所有与至少一条其他记录的出发日期和到达日期相同的记录。请注意,这里假设你的表有一个名为id的字段作为每条记录的唯一标识(通常是主键)。如果没有这样的字段,你可能需要调整这个查询以适应你的具体情况。

    请确保在实际应用中根据你的表结构和需求调整这些查询。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月24日
  • 已采纳回答 1月16日
  • 创建了问题 10月12日