1

可能重复:
使用连接从表中删除重复行

我的表看起来像这样:
a, b, c, d,date
如何删除所有具有相同a,b的行cd除了最新的行date吗?有一些行,有相同的和a不同的。bcd

4

2 回答 2

2

试试这个:

DELETE FROM tableName 
WHERE (a, b, c, d, dte) NOT IN (SELECT a, b, c, d, dte 
                                FROM (SELECT a, b, c, d, MAX(dte) dte 
                                     FROM tableName GROUP BY a, b, c, d
                                ) AS A );

检查这个SQL FIDDLE 演示

于 2013-01-10T09:53:22.993 回答
0

您可以像这样对同一张表使用左连接

DELETE table1
  FROM table1
  LEFT JOIN 
  ( SELECT MAX(`date`) as dates,a,b,c,d FROM table1
    GROUP BY a,b,c,d
  ) A
    ON table1.date = A.dates
   AND table1.a = A.a
   AND table1.b = A.b
   AND table1.c = A.c
   AND table1.d = A.d
 WHERE A.dates IS NULL;

看到这个 SQLFiddle

有关更多信息,请参阅DELETEMySQL 的语法

于 2013-01-10T10:09:37.063 回答