从没有时间戳列的数据库表中增量获取两个日期之间的记录

Posted

技术标签:

【中文标题】从没有时间戳列的数据库表中增量获取两个日期之间的记录【英文标题】:Get records between two dates from a DB table without a timestamp column incrementally 【发布时间】:2019-06-15 05:11:42 【问题描述】:

我有一个没有时间戳列的表: 它的数据如下:

 name     city
------  ------
 Deepak  Pune
 amit    Mumbai
 raj     Chennai 

现在第二天,我们有以下数据:

    name    city
   -----  ------  
   Deepak  Chennai
   amit    Mumbai
   raj     Chennai 
   vikas   Panjab

现在我想查找那些被修改或插入或删除的记录。

例如: 命名城市 ----- ------ 迪帕克钦奈(从浦那更新到钦奈) 阿米特孟买 拉杰钦奈 vikas Panjab(插入新记录)

但我不想比较,因为表有很多列,因为有很多列和十亿条记录。 这就是为什么我想在两个时间戳之间挑选记录,所以我才知道哪些被修改了。

所以 O/P:

name  City
---- ------
Deepak Chennai
vikas  Panjab

请建议我需要使用什么..

【问题讨论】:

“所以我才知道哪些被修改了。” 没有插入或更新行的详细信息..?你没有。如果不存储该元数据,您将无法获得该信息。就像你被问到“你能找出我们有多少客户有蓝眼睛吗?”但这不是您存储的数据。 您使用的是哪个数据库?您已标记 mysqlsql-server 您好,如果您使用的是 sql server 2016 或更新版本,您可以查看临时表 docs.microsoft.com/fr-fr/sql/relational-databases/tables/… 【参考方案1】:

据我了解您的要求。您有一张像 users 这样的带有数据的表格

Name Null? Type         
---- ----- ------------ 
NAME       VARCHAR2(10) 
CITY       VARCHAR2(10)



NAME    CITY
----    -----
raj     chennai
deepak  pune
amit    mubai
vikas   punjab

你可以用这个。它可能会帮助你。

SELECT *
FROM (SELECT u.*,ROWNUM FROM users u ORDER BY ROWNUM DESC)
WHERE ROWNUM=1;

结果会是这样的

 NAME     CITY   ROWNUM
 -----    -----  -----
 vikas    punjab   4

【讨论】:

以上是关于从没有时间戳列的数据库表中增量获取两个日期之间的记录的主要内容,如果未能解决你的问题,请参考以下文章

计算两个时间戳列的差异[重复]

计算蜂巢中两个日期之间的月份

按时间戳列过滤/选择熊猫数据帧的行

如何通过 SQL 语句从两个特定日期(由用户指定)之间的数据库表中获取数据?

Oracle:有效地使用where子句过滤时间戳列以获取特定日期的所有记录

更改增量表中列的数据类型