这是我的桌子的样子
=======================================
|| ID | collection_id | PRODUCT_ID |价格||
=======================================
|| 1 | 1 | 1 | 2.50 ||
|| 2 | 1 | 1 | 2.60 ||
|| 3 | 1 | 1 | 2.40 ||
|| 4 | 2 | 1 | 2.50 ||
=======================================
这是我想要实现的大致轮廓; 使用一些伪代码。
我想要做的是 DELETE FROM 价格 WHERE (集合 _ id&& product _ id重复) AND WHERE (id<最高重复行)
所以我想用简单的英语做的是删除行,其中id等于1& 2但保持id等于3的行,因为这是最新的。
答案 0 :(得分:2)
一个简单的DELETE JOIN
应该这样做;删除至少存在一行且匹配collection_id
和product_id
以及更高值id
的所有行;
DELETE p1
FROM prices p1
JOIN prices p2
ON p1.collection_id = p2.collection_id
AND p1.product_id = p2.product_id
AND p1.id < p2.id
An SQLfiddle to test with,请记住在从互联网上的随机用户进行更新或删除之前,始终备份您的数据。