MySQL保留最新日期的记录

时间:2014-01-24 13:53:07

标签: mysql

我创建了一个表w_provider_remove,以便将Provider_nomax(prov_effective_Date)记录保存在w_providers_load中,因为我有重复的提供程序,但有些已过期。我稍后尝试加入w_providers_load表和w_provider_Remove表,并将记录插入w_providers_main表。问题是我回到了许多记录,因为事实证明我对具有相同生效日期的特定提供商有多个记录。如何限制它以便只插入其中一个?或者也许有另一种方法可以解决这个问题我不需要3个表来完成这个任务

Truncate w_provider_remove;

insert into w_provider_remove
select provider_no as provider_no, max(PROV_DATE_EFFECTIVE) as prov_date_effective
from w_provider_load
group by provider_no;

Truncate w_provider_main;
INSERT INTO w_provider_main
Select l.*
from w_provider_load as l
inner JOIN w_provider_remove as r on l.provider_no = r.provider_no AND l.prov_date_effective = r.prov_date_effective;

1 个答案:

答案 0 :(得分:0)

如果要将表中的行限制为每个提供者的一个生效日期,请创建唯一索引:

create unique index w_provider_load_provider_effectivedate on w_provider_load(provider_no, prov_effective_date);

如果同一提供商的两条记录在加载中具有相同的生效日期,则会生成错误。

你可以为主表做同样的事情:

create unique index w_provider_main_provider_effectivedate on w_provider_main(provider_no, prov_effective_date);