mysql根据重复集和时间删除一些条目
我有两个应用程序编写输入日志位置和输出日志位置。 我想要输入和输出对 有时输入日志位置会更新两次,但我们应该只更新最新的一次 例如:mysql根据重复集和时间删除一些条目,mysql,Mysql,我有两个应用程序编写输入日志位置和输出日志位置。 我想要输入和输出对 有时输入日志位置会更新两次,但我们应该只更新最新的一次 例如: input_log x1 Time1 input_log X1 Time2 out_log X1 Time3. 这里应该更新我的表以删除输入日志x1 Time1,因为对于给定的x1,我们只需要表内输入日志和表外输出日志。 如果新的输入日志在输出日志之后,我们不应该删除 我能够创建一个表,添加时间并随时间排序。 我有一个问题,如何保持状态,以便这些东西将被删除
input_log x1 Time1
input_log X1 Time2
out_log X1 Time3.
这里应该更新我的表以删除输入日志x1 Time1,因为对于给定的x1,我们只需要表内输入日志和表外输出日志。
如果新的输入日志在输出日志之后,我们不应该删除
我能够创建一个表,添加时间并随时间排序。
我有一个问题,如何保持状态,以便这些东西将被删除
CREATE TABLE MyTable(ID INTEGER ,Name TEXT,State TEXT,Timestamp DATETIME DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')));
insert into MyTable (ID,Name,state) values (12,"name1","IN");
insert into MyTable (ID,Name,state) values (13,"name2","IN");
insert into MyTable (ID,Name,state) values (14,"name3","IN");
insert into MyTable (ID,Name,state) values (14,"name3","IN");
insert into MyTable (ID,Name,state) values (12,"name1","OUT");
insert into MyTable (ID,Name,state) values (13,"name2","OUT");
insert into MyTable (ID,Name,state) values (14,"name3","OUT");
基本上,我在bringup上的应用程序进程将更新日志中的日志位置。
并更新退出日志位置outlog。我们不希望在一天结束时出现多个日志,这会在进程未正确启动时发生。通常:
将cte设置为SELECT*,
按ID、名称、状态划分的分区上的行数
按时间戳顺序描述
从MyTable
删除MyTable*
从MyTable
使用ID、名称和状态加入cte
其中cte.rn>1;
对于SQLite:
使用cte作为选择ID、名称、状态、时间戳,
按ID、名称、状态划分的分区上的行数
按时间戳顺序描述
从MyTable
删去
从MyTable
如果存在,请选择NULL
来自cte
其中MyTable.ID=cte.ID
和MyTable.Name=cte.Name
和MyTable.state=cte.state
和MyTable.Timestamp=cte.Timestamp
cte.rn>1;
示例数据中的时间戳值在哪里???它的缺失不允许区分两个值为14、name3的记录,MySQL也不知道STRFTIME。也许你的数据库管理系统是SQLite?