首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图删除重复条目

问试图删除重复条目
EN

Stack Overflow用户
提问于 2022-10-21 14:11:46
回答 1查看 28关注 0票数 0

我有一个数据库,大约有30个字段。这是一个会员网站,所以人们加入并创建一个个人资料,然而,许多成员创建了几个配置文件,每次使用他们的电子邮件,所以我需要删除所有重复的配置文件已经创建,但保留最近的一个。

每个配置文件都有一个唯一的ID,所以我使用了下面的脚本,它显示了所有创建的配置文件的列表,最终用户已经多次使用他们的电子邮件。

代码语言:javascript
复制
select min(id) as lastId, email
    from profiles
   where email in (
              select email 
                from profiles
               group by email
              having count(*) > 1
       )
   group by email;

这个列表看起来很棒,它显示了他们在列表中创建的最古老的配置文件,所以当我谈到这一点时,我非常高兴。然后使用每个选项旁边的复选框选择配置文件,并单击“删除”按钮,然后:

代码语言:javascript
复制
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '@gmail.com LIMIT 1' at line 1

我什么都试过了。我可以删除‘正常’中的一个条目,但我需要选择列表中的所有配置文件,并删除它们。

EN

回答 1

Stack Overflow用户

发布于 2022-10-21 16:41:53

在MySQL/MariaDB中,您必须使用多表删除语法。

https://dev.mysql.com/doc/refman/8.0/en/delete.html

https://mariadb.com/kb/en/delete/

代码语言:javascript
复制
DELETE t1
FROM profiles t1
JOIN profiles t2 USING (email)
WHERE t1.id > t2.id;

也就是说,“如果存在具有相同email但id较低的行,则删除行”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74154962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档