我有一个名为&#34的数据库表;已婚#34;由多个字段组成,两个字段特别构成表的主键。那两个字段名称是; "数字","日期"。
有许多重复的记录共享相同的"数字"但是有不同的日期"相关联。
我需要删除每对中的记录(行),其中"数字"两者之间很常见,但有较旧的" date"相关。但是查询中出现了问题。
delete number from married where number IN(select number from married)
and date <ANY( select date from married)
答案 0 :(得分:1)
您想删除每个号码的最近日期以外的所有日期。在MySQL中,您只能使用在查询的其余部分中发生删除的表。幸运的是,您通常可以使用join
解决此问题。我想这就是你想要的:
delete m
from married m join
(select number, max(date) as maxd
from married
group by number
) tokeep
on m.number = tokeep.number and m.date < tokeep.maxd;