2014-11-21 37 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