最近进入到另一个项目, 数据库用的是DB2, 要实现MySQL中类似replace into的功能, 网上搜了下, 实现了一个类似功能的基础方法(PHP实现)
public function replace($table, $arr, $pks){ $values = ''; $keys = ''; $mergeValues = ''; $upStatement = ''; $first = true; foreach($arr as $key => $val){ if (!$first){ $values .= ','; $keys .= ','; $mergeValues .= ','; $upStatement .= ','; } else{ $first = false; } $values .= "'{ $val}'"; $keys .= $key; $mergeValues .= "merge.{ $key}"; $upStatement .= "tab.{ $key} = merge.{ $key}"; } $first = true; $pkstr = ''; foreach($pks as $pk){ if (!$first){ $pkstr .= ' AND '; } else{ $first = false; } $pkstr .= "tab.{ $pk} = merge.{ $pk}"; } $sql = "MERGE INTO { $table} AS tab USING (VALUES ({ $values}) ) AS merge ({ $keys}) ON { $pkstr} WHEN MATCHED THEN UPDATE SET { $upStatement} WHEN NOT MATCHED THEN INSERT ({ $keys}) VALUES ({ $mergeValues})"; $this->db->query($sql); }
参考链接:
http://www.withdata.com/blog/db2/replace-update-or-insert-a-row-into-db2-table-merge-into.html