比较多个Mysql表以查找修改的记录
我有三个表作为SQLITE3转储 产品、税收、存货 从这些表中,准备csv文件以导入到magento产品部分。那部分就结束了 现在必须运行每日脚本,更新库存、税务、修改的产品详细信息(SKU在任何情况下都不会更改) 在此更新部分中。 例如,我有12000条记录,其中只有400条或1000条记录可以在库存表、税务表、产品表中从最后一天的数据库中更改/修改/更新。其余的行将保持不变 因此,我将最后几天的表格添加为旧产品、旧税、旧库存 并尝试编写sql查询以仅从两组表中提取修改过的记录 (注意:两组表在同一数据库中可用。)比较多个Mysql表以查找修改的记录,mysql,sql,sqlite,Mysql,Sql,Sqlite,我有三个表作为SQLITE3转储 产品、税收、存货 从这些表中,准备csv文件以导入到magento产品部分。那部分就结束了 现在必须运行每日脚本,更新库存、税务、修改的产品详细信息(SKU在任何情况下都不会更改) 在此更新部分中。 例如,我有12000条记录,其中只有400条或1000条记录可以在库存表、税务表、产品表中从最后一天的数据库中更改/修改/更新。其余的行将保持不变 因此,我将最后几天的表格添加为旧产品、旧税、旧库存 并尝试编写sql查询以仅从两组表中提取修改过的记录 (注意:两组表
请告诉我如何编写sql查询,通过比较两组表来提取修改后的记录。这将为您提供所有修改(以及产品): 这就是改良产品:
select * from products where id in (select id old_products)
我可能会改变这个模式 我将有一个表格,用于存储上次将数据导出到CSV的日期: 然后我可以在三个表中的每一个表中都有一个timestamp列,它将保存最后一个修改时间戳。我会有一个触发器来更新那个专栏 为另一个导出查询修改后的数据将非常简单,只需将
LastModified
列与CSVLastExported
中的相应列进行比较即可:
SELECT p.*
FROM products p
INNER JOIN CSVLastExport e
ON p.LastModified > e.ProductsExportDate
从我对问题的理解来看,工作表总是包含所有行。它们与旧的对应项的唯一不同之处在于某些行被修改。修改后的子集就是OP想要从每个子集中提取的内容。@andry。。确切地你是对的。这就是我在这里要做的。旧数据库有8个表,新数据库有8个表。因此,我很难正确编写连接查询。我会计算出来,然后把我的答案贴在这里。
CREATE TABLE CSVLastExported (
ProductsExportDate datetime,
TaxExportDate datetime,
InventoryExportDate datetime
)
SELECT p.*
FROM products p
INNER JOIN CSVLastExport e
ON p.LastModified > e.ProductsExportDate