所以我正在使用 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)")
但是,这将删除除一个重复项之外的所有重复项。我还没有找到一种方法,只删除具有重复项的单行。是否有我正在寻找的删除热门查询?提前致谢。
编辑:我还有一个“id”列,它是主键。
所以我肯定想太多了,但所需要的只是这样:
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 的行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)