[英]how can I delete the entries which my mysql query finds?
SELECT u.name, u.age, u.sex
FROM User u
INNER JOIN (
SELECT age, sex, COUNT(*)
FROM User
GROUP BY age, sex
HAVING COUNT(*) > 1) temp
ON temp.age = u.age
AND temp.sex = u.sex
ORDER BY age, sex
this query finds all my duplicates in my database, but how can I delete the multiple ones? 此查询在数据库中找到我所有的重复项,但是如何删除多个重复项?
Select the ID
of the row your are selecting only, then put DELETE
that will delete all row with these selected ID
. 选择您仅选择的行的ID
,然后放入DELETE
,它将删除所有具有这些选定ID
行。
DELETE FROM User u
WHERE u.ID IN
(
SELECT u.ID
FROM User u
INNER JOIN
(
SELECT u.ID
FROM User
GROUP BY age, sex
HAVING COUNT(*) > 1
) temp
ON temp.age = u.age
AND temp.sex = u.sex
ORDER BY age, sex
)
But I have to advise you that you should change your query as it will erase everything. 但是,我必须建议您更改查询,因为它会删除所有内容。 Your select statement is the same than SELECT * FROM User
as everything if inner joined. 如果内部连接,则select语句与SELECT * FROM User
相同。 So I guess what you really want is: 所以我想您真正想要的是:
DELETE FROM User u
WHERE u.ID IN
(
SELECT u.ID
FROM User
GROUP BY age, sex
HAVING COUNT(*) > 1
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.