所以我在Ruby工作,并说我在两列完全相同的表中有6行。在我的情况下,我的表“campaign_items”有两列“campaign_name”和“item”。我想使用单个查询从6个重复项中只删除一行。我从这开始:
db.exec("DELETE FROM products WHERE campaign_name = '#{camp_name}' AND product_type = 'fleecejacket' AND size = '#{size_array[index]}'")
当然删除了该条件的所有项目。所以我在另一个问题中找到了这样的答案:
db.exec("DELETE FROM products a WHERE a.ctid <> (SELECT min(b.ctid) FROM products b WHERE a.key = b.key)")
但是,这会删除除一个之外的所有重复项。我还没有找到一种只删除具有重复项的SINGLE行的方法。是否有我要查找的删除顶部查询?提前谢谢。
编辑:我还有一个“id”列,这是一个主键。
答案 0 :(得分:0)
所以我绝对推翻了这一点,但所需要的只是:
x = db.exec("SELECT * FROM campaign_items WHERE campaign_name = '#{camp_name}' AND item = 'fleecejacket'")
id = x[0]['id']
db.exec("DELETE FROM campaign_items WHERE campaign_name = '#{camp_name}' AND item = 'fleecejacket' AND id = '#{id}'")
从第一个副本中获取唯一ID(因为删除哪一个并不重要)并删除具有该ID的行。