mysql - 从表中删除旧记录

标签 mysql sql

我正在尝试导入来自不同卖家的产品数据,数据被导入到包含以下字段的导入表中: id=自动递增 sellerid=卖家 key sellerproductid=卖家为产品提供的产品 ID lastupdate=该项目更新的日期

因此卖家 A 的产品 ID 为 22,与卖家 B 的产品 ID 为 55 的产品相同。

当卖家 A 更改产品 A 的价格时,导入中将会出现一行。我目前有许多“历史”行,我只对获取最新的导入感兴趣

例如:

1  A   22     2012 01 22
2  A   22     2012 05 10
44 A   22     2012 11 10

我想像这样存档前两行:

insert into archive ....
values ( select * from import where id in(
 select id from import 
 where `lastupdate` < max(`lastupdate`)
 group by sellerid, sellerproductid
)

我无法找到正确的 mysql 语句来获取旧记录的 id。

最佳答案

这应该给出除最新条目之外的所有条目:

SELECT distinct t1.* 
FROM import t1 inner join import t2 
on t1.sellerid = t2.sellerid and t1.sellerproductid = t2.sellerproductid 
where t1.lastupdate < t2.lastupdate;

关于mysql - 从表中删除旧记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13796190/

相关文章:

java - JSP:多个查询和生成键的问题

Mysql联合优先级

sql - 如何比较 Oracle 中的复杂集合?

sql - 为什么 Oracle 在同一索引上使用范围扫描和快速全扫描?

PHP字段与数据库中相关字段的比较

mysql - Oracle:需要帮助匹配多个条件,但将其视为一个条件

mysql - 更新同一个表中具有相同值的列

php - 通过 PHP 使用 While 循环将多个数据插入到 SQL Server

mysql - 数据库sql内容上的多个图像

MySQL:不同的评估命令行和 mysql 控制台