0

在我的 MySQL 表记录下,我有这些:

SELECT * FROM dbo.online;
+-------+
| Id    |
+-------+
| 10128 |
| 10240 |
|  6576 |
|    32 |
| 10240 |
| 10128 |
| 10128 |
| 12352 |
+-------+
8 rows in set (0.00 sec)

如何做到:

 SELECT * FROM dbo.online;
+-------+
| Id    |
+-------+
| 10128 |
| 10240 |
|  6576 |
|    32 |
| 12352 |
+-------+
8 rows in set (0.00 sec)

换句话说,我想做的是,使用 DELETE 命令而不是 SELECT * FROM dbo.online GROUP BY id .. 那么,知道怎么做吗?

4

3 回答 3

2

将数据复制到备份表中distinct,该步骤消除了重复项

create table backUp_online as
SELECT distinct * 
FROM online;

清除源表

truncate table online

将数据从备份复制到源表而不重复

   insert into online
   select *
   from backUp_online
于 2013-08-07T11:59:59.663 回答
1

MySQL中有一个技巧:

ALTER IGNORE TABLE `dbo`.`online` ADD UNIQUE KEY `ukId`(`Id`)

也很有用。

于 2013-08-07T11:54:57.037 回答
0

执行相同操作的最简单查询。

DELETE n1 FROM online n1, online n2 WHERE n1.id < n2.id AND n1.name = n2.name
于 2013-08-07T12:01:48.923 回答