【问题标题】:How to to delete a duplicate data with the latest time submission from a database?如何从数据库中删除具有最新提交时间的重复数据?
【发布时间】:2013-11-13 12:52:02
【问题描述】:

我正在使用以下查询从数据库中获取公司:

companies = Company.objects.order_by('submit_time').reverse()

我得到的输出:

2013-11-13 12:25:30+00:00

2013-11-13 12:25:30+00:00

2013-11-13 12:25:14+00:00

2013-11-13 12:25:13+00:00

2013-11-13 12:25:13+00:00

2013-11-13 05:11:55+00:00

2013-11-13 05:11:55+00:00

2013-11-13 05:11:29+00:00

2013-11-13 05:11:29+00:00

2013-11-13 05:11:28+00:00

公司提交时间包含重复。我正在使用代码查找同时提交的公司:

seen = set()
result = []
for item in companies:
    if item not in seen:
        seen.add(item.submit_time)
        result.append(item.submit_time)

有什么方法可以调整以下代码,以便我可以找到重复的公司时间提交并删除最新时间的公司并保留更早时间的公司?谢谢!

【问题讨论】:

    标签: jquery python database django


    【解决方案1】:

    当重复是时间本身时,我不明白“删除最新时间的公司并保留更早的时间”这一点。即不早也不晚

    你不能:

    seen = set()
    result = []
    for item in companies:
        if item.submit_time not in seen:
            seen.add(item.submit_time)
            result.append(item.submit_time)
        else:
            item.delete()
    

    更新:

    seen = {}
    result = []
    for item in companies:
        if item.submit_time not in seen:
            seen[item.submit_time] = item
            result.append(item.submit_time)
        else:
            seen[item.submit_time].delete()
            seen[item.submit_time] = item
    

    【讨论】:

    • 查看您的编辑,这将删除您访问的第二个,但如果原始查询是按 id asc 顺序排列的,那么同一时间的后一个 id 将被删除
    • 刚刚测试了它,它确实做到了,但相反 2013-11-13 12:25:30+00:00
    • 已更新,未测试...应该做你想做的事
    猜你喜欢
    • 1970-01-01
    • 2012-07-01
    • 2018-11-08
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    • 2016-08-24
    • 2013-03-21
    相关资源
    最近更新 更多