如果mysql中所有对应的ID都相同,如何删除所有的行? id |编号 12摄氏度 21 | e 31 | a 43 | a 43 | a 43 | b 52 | x 52 | x 52 | x 53 | d
在上面的示例中,我希望保留与43对应的所有行,并删除属于52的所有行。我们可以在此处尝试使用聚合逻辑:如果mysql中所有对应的ID都相同,如何删除所有的行? id |编号 12摄氏度 21 | e 31 | a 43 | a 43 | a 43 | b 52 | x 52 | x 52 | x 53 | d,mysql,Mysql,在上面的示例中,我希望保留与43对应的所有行,并删除属于52的所有行。我们可以在此处尝试使用聚合逻辑: DELETE FROM yourTable t1 WHERE t1.id IN (SELECT id FROM (SELECT id FROM yourTable GROUP BY id HAVING COUNT(*) > 1 AND COUNT(DISTINC
DELETE
FROM yourTable t1
WHERE
t1.id IN (SELECT id FROM (SELECT id FROM yourTable
GROUP BY id
HAVING COUNT(*) > 1 AND COUNT(DISTINCT number) = 1) x);
限制
COUNT(*)>1
确保id
至少有两条记录,而COUNT(DISTINCT number)=1
确保此id
对于所有重复项具有相同的数值。我们将子查询包装一次,以避免在删除表时引用表时出现任何可能的MySQL错误。这将删除与52对应的所有行。那些有43个和其他ID的将保留在表中
DELETE FROM table_name WHERE id = 52;
有基本操作,;你最好通读一些
更新:如果只想删除与重复id和数字组合对应的行,可以尝试以下SQL语句。它使用id和数字的串联来确定要删除的重复项
DELETE FROM table_name WHERE id IN (
SELECT DISTINCT id from (
select concat(id,'-',number) as connum from table_name
group by connum
having connum > 1
)
)
12号、21号和31号呢?解释被删除的确切内容及其原因。只删除一次属于52的内容,保留REST。我无法添加唯一的索引来删除43个,这与OP的意思不完全一样。他指的是如何删除特定id中只有相同编号的行。52是一个例子Hi@Tim Biegeleisen,你能帮我回答一个类似的问题吗?我有一阵子投了赞成票。让我检查一下如何接受