Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较多个Mysql表以查找修改的记录_Mysql_Sql_Sqlite - Fatal编程技术网

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

比较多个Mysql表以查找修改的记录,mysql,sql,sqlite,Mysql,Sql,Sqlite,我有三个表作为SQLITE3转储 产品、税收、存货 从这些表中,准备csv文件以导入到magento产品部分。那部分就结束了 现在必须运行每日脚本,更新库存、税务、修改的产品详细信息(SKU在任何情况下都不会更改) 在此更新部分中。 例如,我有12000条记录,其中只有400条或1000条记录可以在库存表、税务表、产品表中从最后一天的数据库中更改/修改/更新。其余的行将保持不变 因此,我将最后几天的表格添加为旧产品、旧税、旧库存 并尝试编写sql查询以仅从两组表中提取修改过的记录 (注意:两组表

我有三个表作为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