将多行更新并插入MySQL数据库

时间:2015-11-22 04:38:52

标签: php mysql

我写了这段代码,将多行插入数据库,我需要更新重复项。

    INSERT INTO `me_cities`( `from`, `destination`, `price`, `updated`)
 VALUES 
('ERR','MRHD','91,000',now()),
('ERR','KIH','106,800',now()),
('ERR','SYZ','86,000',now()),
('ERR','AWZ','121,000',now()),
('ERR','IFN','116,741',now()),
('ERR','GSM','111,000',now()),
('ERR','NJF','141,000',now()),
('ERR','IST','351,000',now()),
('ERR','BND','116,000',now()),
('ERR','DEF','120,200',now()),
('ERR','','151,000',now()),
('ERR','BUZ','161,000',now()) 
    ON DUPLICATE KEY UPDATE `price`=VALUES(price),`updated`=VALUES(now());

但我对此查询有错误。 如果 from destination 字段与下一行相同,我需要更新该行。

2 个答案:

答案 0 :(得分:1)

如果我得到你的主题,我认为你应该做这样的事情:

 INSERT INTO `me_cities`( `from`, `destination`, `price`, `updated`)
 VALUES 
('ERR','MRHD','91,000',now()),
('ERR','KIH','106,800',now()),
('ERR','SYZ','86,000',now()),
('ERR','AWZ','121,000',now()),
('ERR','IFN','116,741',now()),
('ERR','GSM','111,000',now()),
('ERR','NJF','141,000',now()),
('ERR','IST','351,000',now()),
('ERR','BND','116,000',now()),
('ERR','DEF','120,200',now()),
('ERR','','151,000',now()),
('ERR','BUZ','161,000',now())
    ON DUPLICATE KEY UPDATE `price`=VALUES(`price`),`updated`=VALUES(`updated`);

更新,如果你想更新每一个,首先使from和destination列唯一且相关的唯一键,就像这个查询

  INSERT INTO `me_cities`( `from`, `destination`, `price`, `updated`)
     VALUES 
    ('ERR','MRHD','91,000',now()) ON DUPLICATE KEY UPDATE `price`=''  ,`updated`=now() ;
INSERT INTO `me_cities`( `from`, `destination`, `price`, `updated`)
     VALUES 
    ('ERR','MRHD','91,000',now())ON DUPLICATE KEY UPDATE `price`=''  ,`updated`=now() ;

答案 1 :(得分:0)

生成并执行此命令

UPDATE `me_cities` SET `price`='91,000', `updated`=now() WHERE EXIST (SELECT WHERE `from`='ERR'  AND `destination`='MRHD` AND `price`='91,000' AND `updated`=now())