Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/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 - Fatal编程技术网

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?