Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否删除mySQL 5.7.9中的所有重复行?_Mysql - Fatal编程技术网

是否删除mySQL 5.7.9中的所有重复行?

是否删除mySQL 5.7.9中的所有重复行?,mysql,Mysql,我想使用GROUPBY删除mySQL表中具有重复项的所有行。“我的表”中有字段“名称”“日期”“位置”“电子邮件”,看起来像 +----------+---------------+----------+--------------------+ | M | 1976-10-03 | 1 | m@gmail | | R | 1982-03-26 | 2 | r@gmail.com | | C

我想使用GROUPBY删除mySQL表中具有重复项的所有行。“我的表”中有字段“名称”“日期”“位置”“电子邮件”,看起来像

+----------+---------------+----------+--------------------+
| M        | 1976-10-03    |        1 | m@gmail            |
| R        | 1982-03-26    |        2 | r@gmail.com        |
| C        | 1987-09-03    |        3 | c@gmail.com        |
| M        | 1976-10-03    |        1 | m@gmail            |
+----------+---------------+----------+--------------------+
我想去

+----------+---------------+----------+--------------------+           |
| R        | 1982-03-26    |        2 | r@gmail.com        |
| C        | 1987-09-03    |        3 | c@gmail.com        |
+----------+---------------+----------+--------------------+
我的尝试来自于对类似问题的回答

DELETE FROM ts1 WHERE * IN (SELECT * FROM ts1 GROUP BY * HAVING COUNT(*)>1);
错误在哪里?我知道我使用的*太多了,但我希望避免命名所有列,因为它们在我的实际表中太多了。请注意,我想检查整行是否有重复项

您不能使用GROUP BY*-您想使用GROUP BY name:

请注意,这将假定用户具有唯一的名称

因此,你可能真的想查看他们的电子邮件:

DELETE FROM ts1 WHERE email IN (SELECT email FROM ts1 GROUP BY email HAVING COUNT(*)>1);

Ypu应避免在*上分组。尝试对邮件进行分组检查,我认为这是一个重复的问题不,不是,我想问的是如何避免命名所有字段。是否有一种方法可以检查所有字段而不命名所有字段?@user3285148通常根据该定义,您不会对任何内容进行分组。在这种情况下,SELECT*FROM表格等同于SELECT*FROM表格分组方式*。。。除非整行都有纯重复项。否则整行都有重复项。@user3285148-没有快捷方式可以将它们全部列出。你不能说GROUPBY*,你必须列出每一列。如果您有很多列并且需要检查每一列,我将开始键入。如果我键入您的命令,我将得到以下错误:您不能在FROM子句中为update指定目标表“ts1”
DELETE FROM ts1 WHERE email IN (SELECT email FROM ts1 GROUP BY email HAVING COUNT(*)>1);