2014-12-10 1 views
0

Я пытаюсь вставить несколько строк данных из одной таблицы в другую таблицу, если существует строка с дублирующимся значением в столбце ликворника, тогда просто не сделайте вставьте его. Я нашел здесь следующее решение, однако для сервера sql, а не для mysql, было бы лучше иметь решение, использующее join.mysql вставляет много уникальных строк из таблицы в таблицу на основе значения столбца

insert into tblBusinessName(BusinessFilterPhrase, BusinessCategoryID) 
select @BusinessFilterPhrase, @BusinessCategoryID 
from tblBusinessName t1 
where NOT EXISTS (select 1 
        from tblBusinessName d1 
        where d1.BusinessFilterPhrase = @BusinessFilterPhrase 
       ) 

ответ

0

Ваше решение в основном подходит для MySQL. , , насколько это возможно.

Если вы хотите, чтобы убедиться, что liquorcode является уникальным, то вы должны иметь базу данных применять это ограничение, используя ограничение уникальности или индекс:

create unique index idx_tblBusinessName(liqurocode); 

Затем, когда вы делаете вставку, просто игнорировать ошибку , Я предпочитаю делать это, используя on duplicate key update. Вот версия, таких как запрос (конечно, ваш пример кода не использует liquorcode, так что я должен угадать, что вы на самом деле имели в виду):

insert into tblBusinessName(BusinessFilterPhrase, BusinessCategoryID) 
    values (@BusinessFilterPhrase, @BusinessCategoryID) 
    on duplicate key update BusinessCategoryId = values(BusinessCategoryId); 

on duplicate key update часть в основном не делает ничего (установив столбец сам). Его цель - предотвратить ошибку при дублировании.