gpt4 book ai didi

mysql - Rails mysql 删除重复的元组

转载 作者:太空宇宙 更新时间:2023-11-03 12:29:58 25 4
gpt4 key购买 nike

所以我正在开发这个应用程序,我们有供应商,每个供应商都有很多分数,每个分数都有详细信息。有两种输入供应商分数的方法,一种是通过表格,另一种是上传 excel。现在我们有一些人通过电子表格上传,这将更新单个供应商,然后上传整个列表,这为她的所有供应商创建了副本。

这条sql语句是我写的。注意:让分数独一无二的是 1. 它的 ID 和 2. valid_from 和 valid_until 日期的组合。

def remove_old_duplicates
remove_dup = "DELETE s1 FROM `sms_development`.`scores` s1, `sms_development`.`scores` s2 WHERE s1.supplier_id = s2.supplier_id AND s1.valid_from = s2.valid_from AND s1.valid_until = s2.valid_until AND s1.id < s2.id;"

ActiveRecord::Base.connection.execute remove_dup
end

基本上,这应该做的是获取表格并将其与自身结合,然后查找供应商相同且 valid_from 和 valid_until 属性相同的所有分数。然后它寻找具有最大 ID 号的那个并删除其余的。唯一的问题是它没有删除它们。我在工作台上运行查询,它说它工作正常,只是不在应用程序中。我在导入新数据后立即运行此查询?关于可能导致此问题的任何想法?

注意:我将它基于 ID 号而不是 created_at 属性的原因是,如果我在字段中创建分数,rails 会给我 created_at 属性,excel 上传使用 sql 插入,因此不会获得该属性, 由于 ID 是唯一的,我认为 ID 越大,记录越新

最佳答案

试试这个:

remove_dup = "DELETE s1 FROM `sms_development`.`scores` s1 JOIN
`sms_development`.`scores` s2 ON s1.supplier_id = s2.supplier_id AND s1.valid_from =
s2.valid_from AND s1.valid_until = s2.valid_until AND s1.id < s2.id;"

DEMO

关于mysql - Rails mysql 删除重复的元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15933286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com