Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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基于主键和列删除除一个值以外的所有值_Mysql_Duplicate Removal - Fatal编程技术网

MySQL基于主键和列删除除一个值以外的所有值

MySQL基于主键和列删除除一个值以外的所有值,mysql,duplicate-removal,Mysql,Duplicate Removal,我的桌子 id userid emailid ---+---------+------------ 1 | 1 | a@a.com 2 | 1 | b@b.com 3 | 123 | a@a.com 4 | 123 | b@b.com 5 | 123 | c@c.com 6 | 123 | c@c.com 所需结果 id userid emailid ---+--------

我的桌子

 id   userid    emailid
 ---+---------+------------
 1  |  1      |  a@a.com
 2  |  1      |  b@b.com
 3  |  123    |  a@a.com
 4  |  123    |  b@b.com
 5  |  123    |  c@c.com
 6  |  123    |  c@c.com
所需结果

id    userid    emailid
 ---+---------+------------
 1  |  1      |  a@a.com
 2  |  1      |  b@b.com
 3  |  123    |  a@a.com
 4  |  123    |  b@b.com
 5  |  123    |  c@c.com
但是我越来越

id    userid    emailid
 ---+---------+------------
 1  |  1      |  a@a.com
 2  |  1      |  b@b.com
 6  |  123    |  c@c.com
我尝试过(我是SQL新手)

试试这个

查询
我花了3个小时写测试查询和搜索stackoverflow。你提到的链接有一个错误的答案,我发现,除非我还包括和n1.id n2.id,否则它会删除表中的每一行。我不明白它是怎么得到218票的!大多数其他答案要求我更改表的定义方式,或者没有显示如何删除。对于我的问题,我最接近的答案是我在上面的“我试过…”下面贴了什么,直到乌拉斯在下面回答。
DELETE FROM table 
WHERE id NOT IN (SELECT *
FROM (SELECT MIN(n.id) 
FROM table n GROUP BY n.emailid) x)
DELETE FROM table_name 
WHERE id NOT IN
(
   SELECT MIN(id)
   FROM table_name
   GROUP BY userid,emailid
);