Vicente,

A simple & fast way is via an exclusion join:

delete t1
from tbl t1
left join tbl t2 on t1.value=t2.value and t1.id>t2.id
where t2.id is not null;

To understand how that works, notice that the query

select t1.id
from tbl t1
left join tbl t2 on t1.value=t2.value and t1.id>t2.id
where t2.id is null;

returns row pairs matched on value values with minimum id values; therefore the query

select t1.id
from tbl t1
left join tbl t2 on t1.value=t2.value and t1.id>t2.id
where t2.id is not null;

returns all remaining rows, and those are the ones deleted by the query given.

PB


Vicente Lopez wrote:
Hello,

I have a table with this values:

id    value    time
1        12    200704042112
2        12    200704042120
3        14    200704042125
4        14    200704042131
5        17    200704042140
6        14    200704042143
7        20    200704042145
8        20    200704042148


I want to delete the rows with the same value of the preceding one, the spected result
looks like this:

id    value    time
1       12        200704042112
3       14        200704042125
5       17        200704042140
6       14        200704042143
7       20        200704042145


but I don't have any idea how make this select...



--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to