2012-01-20 77 views
2

我有以下SQL语句:SQL更新,如果已经存在,否则插入

$sql = "INSERT INTO jos_vm_product_details (variant_id, global_variant_id, 
        code, size, details, color, top, price) 
     VALUES ('$variant_id', '$global_variant_id', '$code', '$size', 
       '$details', '$color', '$top', '$price')"; 

这仅仅是一个基本的插入SQL。如果'variant_id'已经存在,是否有更新记录的方法?如果'variant_id'不在那里,它应该插入一个新的。

任何帮助,将不胜感激

+0

您可以尝试REPLACE INTO语句 – Lake

回答

4
$sql = "INSERT INTO jos_vm_product_details (variant_id, global_variant_id, 
        code, size, details, color, top, price) 
     VALUES ('$variant_id', '$global_variant_id', '$code', '$size', 
       '$details', '$color', '$top', '$price') 
     ON DUPLICATE KEY UPDATE 
      global_variant_id = VALUES(global_variant_id), 
      code = VALUES(code), 
      size = VALUES(size), 
      details = VALUES(details), 
      color = VALUES(color), 
      top = VALUES(top), 
      price = VALUES(price)"; 
2

在MySQL中,你可以使用重复键

INSERT INTO jos_vm_product_details (variant_id, global_variant_id, 
        code, size, details, color, top, price) 
     VALUES ('$variant_id', '$global_variant_id', '$code', '$size', 
       '$details', '$color', '$top', '$price')"; 

ON DUPLICATE KEY UPDATE `code`=VALUES(`code`); 

在T-SQL(2008年的较高),你可以使用MERGE

相关问题