首页 > 解决方案 > 使用phpmyadmin在我的SQL中查询删除大型数据库中的连续重复值

问题描述

我的数据库中有一个带有速度列的表记录。现在前 6 个条目在不同的时间戳中是相同的(连续重复值)。我想删除这些重复的值,只取单个值。一段时间后,速度会发生变化并变为 200,然后再次保持不变,那么我的查询也应该从我的表记录中删除那些连续的重复值。

简而言之,我想过滤我的记录表并使该表没有连续重复的值,仅显示不同时间戳中的单个值。

数据库记录表中的速度:
数据库记录表中的速度

我尝试了不同的查询来执行其中一些是这些

DELETE t1 FROM records t1
inner join records t2
WHERE t1.speed = t2.speed AND t1.run_date_time < t2.run_date_time

DELETE FROM history 
WHERE id IN (
SELECT x.id
FROM (             
  SELECT id
  FROM history AS h1
  WHERE 
      speed = (SELECT speed
              FROM history AS h2
              WHERE                     
                    h2.run_date_time < h1.run_date_time
              ORDER BY run_date_time DESC 
              LIMIT 1)) AS x)

标签: mysqlsqlphpmyadmin

解决方案


根据您的第二个查询,我相信这是history(不是records)表,它是 MySql(LIMIT)。

DELETE
FROM history 
WHERE id IN (
  SELECT x.id
  FROM (             
    SELECT id, lag(speed, 1, speed+1) over(order by run_date_time) != speed newFlag
    FROM history ) x
  WHERE NOT newFlag)

推荐阅读