2014-11-21 25 views
2

我使用下面的查詢與succes,只有在data_advertentie中具有該ID的行存在時才執行此查詢。使用SELECT和ON複製密鑰更新插入到PDO

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 

現在我想添加一個對重複鍵,所以如果在data_contactgegevens存在行的行西港島線進行更新。

請幫助....

回答

1

insert聲明的末尾添加on duplicate key update件。

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

在表上ID_advertentie索引UNIQUE data_contactgegevens的PDO查詢現在看起來像: INSERT INTO data_contactgegevens(ID_advertentie,telefoonnummer,網站) SELECT ID_advertentie,:telefoonnummer,:網站FROM data_advertenties WHERE ID_advertentie =:ID_advertentie和unieke_hash_plaatsen =:hash_plaatsen 重複密鑰更新telefoonnummer =:telefoonnummer,website =:website – 2014-11-22 08:13:15