比较多个Mysql表以查找修改过的记录

时间:2011-03-29 05:56:59

标签: mysql sql sqlite

我有三个表作为SQLITE3转储。

产品,税,库存

从这些表中准备要导入magento产品的csv文件部分。那部分结束了。

现在必须运行每日脚本,更新库存,税金,修改后的产品详细信息(SKU在任何情况下都不会更改)。

在此更新部分中。   例如,我有12000条记录,其中只有400或1000条记录在库存表,税表,产品表中从最后一天的数据库中更改/修改/更新。其余行将保持不变。

所以我将最后几天的表格添加为 old_products,old_tax,old_inventory

并尝试编写sql查询以仅从两组表中提取修改过的记录

(注意:Same Db中提供了两组表。)

请任何人都可以通过比较两组表来帮助我编写一个sql查询来提取修改过的记录。

2 个答案:

答案 0 :(得分:1)

这为您提供了所有修改(和产品):

 select * from products p inner join old_products o on p.id = o.id

这是修改后的产品:

 select * from products where id in (select id old_products)

答案 1 :(得分:1)

我可能会更改此架构。

我会有一个表格,用于存储上次将数据导出为CSV时的日期:

CREATE TABLE CSVLastExported (
  ProductsExportDate datetime,
  TaxExportDate datetime,
  InventoryExportDate datetime
)

然后我可以在三个表中的每个表中都有一个时间戳列,它将保存最后一个修改时间戳。我会触发更新该列。

查询修改后的数据以进行其他导出就像将LastModified列与CSVLastExported中的相应列进行比较一样简单:

SELECT p.*
FROM products p
  INNER JOIN CSVLastExport e
    ON p.LastModified > e.ProductsExportDate