2014-01-24 110 views
0

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

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; 
+0

你的问题格式不正确。我不明白你的意思 – RononDex

回答

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); 
+0

有重复的表是w_provider_load – user3232261

+0

所以,如果我在表中创建该索引,我将提供程序移动到(w_provider_main)它会给我的错误,并没有记录将被插入供应商?还是会插入一个提供商? – user3232261

+0

无论哪个表具有索引,都将允许插入一条记录,但不允许插入第二条记录。也许你想'w_provider_main'。 –