删除所有非重复行但保留一行

时间:2016-02-25 12:23:28

标签: php mysql sql sql-delete delete-row

在MySQL中,我有一个像这样的表

com/izforge/izpack/bin/native/izpack/

我想删除包含book | user | phone 445 a 69 445 g 75 445 e 22 445 l 55 332 w 57 332 u 34 332 v 87 881 o 49 book445 book的所有行,并在结尾处随机保留其中一行。

因此表格将成为

332

我如何在SQL中执行此操作?我使用phyMyAdmin和PHP 5.6

由于

4 个答案:

答案 0 :(得分:1)

在MySQL中,您将使用join。假设user对于赠送书是唯一的:

delete t
    from t join
         (select book, max(user) as maxuser
          from t
          group by book
         ) tt
         where t.book = tt.book and t.user < tt.maxuser;

答案 1 :(得分:1)

假设book, user是唯一的:

DELETE t1 FROM `table` t1, `table` t2 WHERE t1.user > t2.user AND t1.book = t2.book

如果您想保留“最高”用户,请将>更改为<

答案 2 :(得分:1)

你去吧:

DELETE FROM table1 t1, table1 t2 WHERE t1.user > t2.user AND t1.book = t2.book

将table1替换为您的实际表名

答案 3 :(得分:0)

sagi评论的简单更改可以帮助您轻松实现:

console.log((<any>animalName).name)