我有一个数据库,大约有30个字段。这是一个会员网站,所以人们加入并创建一个个人资料,然而,许多成员创建了几个配置文件,每次使用他们的电子邮件,所以我需要删除所有重复的配置文件已经创建,但保留最近的一个。
每个配置文件都有一个唯一的ID,所以我使用了下面的脚本,它显示了所有创建的配置文件的列表,最终用户已经多次使用他们的电子邮件。
select min(id) as lastId, email
from profiles
where email in (
select email
from profiles
group by email
having count(*) > 1
)
group by email;这个列表看起来很棒,它显示了他们在列表中创建的最古老的配置文件,所以当我谈到这一点时,我非常高兴。然后使用每个选项旁边的复选框选择配置文件,并单击“删除”按钮,然后:
#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我什么都试过了。我可以删除‘正常’中的一个条目,但我需要选择列表中的所有配置文件,并删除它们。
发布于 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/
DELETE t1
FROM profiles t1
JOIN profiles t2 USING (email)
WHERE t1.id > t2.id;也就是说,“如果存在具有相同email但id较低的行,则删除行”。
https://stackoverflow.com/questions/74154962
复制相似问题