2014-11-21 6 views
2

Я использую следующий запрос с помощью succes, этот запрос выполняется только в том случае, если существует строка в data_advertentie с идентификатором.PDO insert into with SELECT и ON DUPLICATE KEY UPDATE

INSERT INTO data_contactgegevens (ID_advertentie, telefoonnummer, website) 
SELECT ID_advertentie, :telefoonnummer, :website FROM data_advertenties 
WHERE ID_advertentie = :ID_advertentie AND unieke_hash_plaatsen = :hash_plaatsen 

Теперь я хочу, чтобы добавить дублирование KEY, поэтому если строка существует в data_contactgegevens строка Виль быть обновлена.

Пожалуйста, помогите ....

ответ

1

Добавьте on duplicate key update кусок в конце вашего insert заявления.

Пример

create table a(
    id int not null auto_increment primary key, 
    x varchar(10) 
); 

create table b(
    id int not null auto_increment primary key, 
    y varchar(10) 
); 

insert into a(x) values ('a'), ('b'), ('c'); 

insert into b(y) values ('e'), ('d'); 

insert into a 
    select * from b 
    on duplicate key update x = y; 

Результат:

select * from a; 

| ID | X | 
|----|---| 
| 1 | e | 
| 2 | d | 
| 3 | c | 

Вот SQL fiddle для этого примера.

+0

с индексом UNIQUE на ID_advertentie в таблице data_contactgegevens запрос PDO теперь выглядит следующим образом: INSERT INTO data_contactgegevens (ID_advertentie, telefoonnummer, веб-сайт) ВЫБРАТЬ ID_advertentie,: telefoonnummer,: сайт FROM data_advertenties WHERE ID_advertentie =: ID_advertentie И unieke_hash_plaatsen =: hash_plaatsen ON DUPLICATE KEY UPDATE telefoonnummer =: telefoonnummer, website =: website –

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