2014-01-24 4 views
0

Я создал таблицу w_provider_remove, чтобы сохранить Provider_no и max(prov_effective_Date) записей в w_providers_load, потому что у меня есть дубликаты поставщиков, но некоторые истекли. Позднее я попытаюсь присоединиться к таблице 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'. –

Смежные вопросы