2016-04-09 2 views
0

У меня есть таблица цветовых схем, которые пользователь может настраивать и переключаться между собой на моем сайте. Например, «темная» схема и «световая» схема. Я хочу, чтобы обновить эту таблицу, сначала проверив, какая у пользователя такая схема, поэтому я не добавляю комбинацию схемы/пользователя дважды.SQL INSERT IGNORE уникальная комбинация значений

| userid | schemename | background | text | 
--------------------------------------------------- 
| 1  | dark  | black  | white | 
| 1  | light  | white  | grey | 
| 2  | dark  | black  | white | 
| 2  | light  | white  | grey | 
etc. 

У меня есть скрипт обновления, который держит эти схемы в синхронизации с мастером-схем - так что если пользователь происходит удаление схемы, они могут повторно синхронизировать свои схемы с мастером. Мне нужна инструкция insert, которая добавит только в схему, если комбинация userid/schemename еще не существует в таблице. Могу ли я использовать INSERT IGNORE или что-то подобное?

+0

Посмотрите на [это] (http://stackoverflow.com/a/548570/3294262) – fusion3k

ответ

0

Вы можете сделать ничуть не в пункте

insert into your_destination_table (user_id, schemename, background, text) 
select user_id, schemename, background, text 
from your_source_table 
where (user_id, schemename) not in 
    (select user_id, schemename, background, text 
    from your_destination_table); 
+0

можно совместить это с несколькими вставками? 'INSERT INTO table (keys) VALUES (значения), (значения), (значения) WHERE (userid, schemename) NOT IN (select и т. Д.)' –

+0

Число и тип столбцов в "в таблице (столбец, .... .) «. должно совпадать с количеством и типом столбцов в «значениях (столбцах, ....) .. то, что вы, сценарий, не уважаете этот путь ... и для множественной вставки вставки ... select script insert all all selected .. .. вначале лучше объясните свою потребность – scaisEdge

+0

Если у вас нет предложения select, вы не можете использовать условия где .. – scaisEdge

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