Mysql 想要不同的连续行吗

Mysql 想要不同的连续行吗,mysql,sql,Mysql,Sql,我随身携带下表的存储容量 CREATE TABLE STORAGE_CAPACITY(DATE_TIME DATETIME,COL1 INT,COL2 INT,COL3 INT,COL4 INT); INSERT INTO STORAGE_CAPACITY values(SYSDATE(),1,2,3,4); INSERT INTO STORAGE_CAPACITY values(SYSDATE(),1,2,3,4); INSERT INTO STORAGE_CAPACITY values(S

我随身携带下表的存储容量

CREATE TABLE STORAGE_CAPACITY(DATE_TIME DATETIME,COL1 INT,COL2 INT,COL3 INT,COL4 INT);

INSERT INTO STORAGE_CAPACITY values(SYSDATE(),1,2,3,4);
INSERT INTO STORAGE_CAPACITY values(SYSDATE(),1,2,3,4);
INSERT INTO STORAGE_CAPACITY values(SYSDATE(),4,5,6,7);
INSERT INTO STORAGE_CAPACITY values(SYSDATE(),4,5,8,9);
INSERT INTO STORAGE_CAPACITY values(SYSDATE(),1,2,3,4);
从存储容量中选择*

 DATE_TIME, COL1, COL2, COL3, COL4
'2017-08-16 16:37:02', '1', '2', '3', '4'
'2017-08-16 16:37:18', '4', '5', '6', '7'
'2017-08-16 16:37:26', '4', '5', '8', '9'
'2017-08-16 16:37:57', '1', '2', '3', '4'
现在我想要的是,如果两个连续的行在col1到col4中有相同的元素,那么我只想要一个旧的

若将来发生同样的争吵,那个么我想要那个争吵

因此,我的预期O/p

 DATE_TIME, COL1, COL2, COL3, COL4
'2017-08-16 16:37:02', '1', '2', '3', '4'
'2017-08-16 16:37:18', '4', '5', '6', '7'
'2017-08-16 16:37:26', '4', '5', '8', '9'
'2017-08-16 16:37:57', '1', '2', '3', '4'

假设第一列定义了顺序,可以使用变量:

select t.*
from (select t.*,
             (@rn := if(@cols = concat_ws(',', col1, col2, col3, col4), @rn + 1,
                        if(@cols := concat_ws(',', col1, col2, col3, col4), 1, 1)
                       )
             ) as rn                    
      from t cross join
           (select @cols := '', @rn := 0) params
      order by t.date_time
     ) t
where rn = 1;

注意:要确定插入顺序,使用
auto_increment
列比使用
datetime
列更安全。可以使用相同的
datetime
值在表中插入多行。

提供带有“sysdates”的数据集没有多大帮助。@我在预期输出中提供了相同的数据。我很清楚所提供的内容,谢谢。特别感谢。。!!