2012-08-22 113 views
1

我有以下查询:MySQL的删除连续行

select count(*) 
FROM 
    cumul AS t1, 
    cumul AS t2 
WHERE 
    t1.id+1 = t2.id 
and 
    t2.spec_datetime-t1.spec_datetime < 0.001 
and 
    t1.id < 100000 
and 
    t1.v1-t2.v1 = 0 
and 
    t1.v2-t2.v2 =0; 

我想删除相同的记录:

DELETE FROM cumul AS t1, cumul AS t2 
WHERE 
    t1.id+1 = t2.id 
and 
    t2.spec_datetime-t1.spec_datetime < 0.001 
and 
    t1.v1-t2.v1 = 0 
and 
    t1.v2-t2.v2 = 0; 

我得到:

ERROR 1064(42000) :您的SQL语法错误;检查手册, 对应于您的MySQL服务器版本的正确语法使用'AS t1 ,积分AS t2 WHERE t1.id + 1 = t2.id和t2.spec_datetime-t1.spec_datetime <'在 行1

如何纠正查询?

回答

1
 
DELETE t1 FROM cumul AS t1, cumul AS t2 
     ^^ 
Just add alias before FROM 

那么试试这个:

DELETE t1 FROM cumul AS t1, cumul AS t2 
WHERE 
    t1.id+1 = t2.id 
and 
    t2.spec_datetime-t1.spec_datetime < 0.001 
and 
    t1.v1-t2.v1 = 0 
and 
    t1.v2-t2.v2 = 0; 

请参阅MySQL :: 13.2.2. DELETE Syntax了解更多信息。

+0

谢谢hims056。它工作完美。 –