zoukankan      html  css  js  c++  java
  • REPLACE INTO的用法

    在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在; 2. 如果不存在,则插入;3.如果存在,则更新。

    在 SQL Server 中可以这样处理:

    if not exists (select 1 from t where id = 1) 
    insert into t(id, update_time) values(1, getdate())
    else
    update t set update_time = getdate() where id = 1

    那么 MySQL 中如何实现这样的逻辑呢?别着急!MySQL 中有更简单的方法:

    replace into t(id, update_time) values(1, now());或
    replace into t(id, update_time) select 1, now();

    replace into 跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中, 1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。 2. 否则,直接插入新数据。


    要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。

    replace into的三种语法形式:

    REPLACE [LOW_PRIORITY | DELAYED]
        [INTO] tbl_name [(col_name,...)]
        VALUES ({expr | DEFAULT},...),(...),...
    或
    REPLACE [LOW_PRIORITY | DELAYED]
        [INTO] tbl_name
        SET col_name={expr | DEFAULT}, ...
    或
    REPLACE [LOW_PRIORITY | DELAYED]
        [INTO] tbl_name [(col_name,...)]
        SELECT ...

    附上UCHome中看到的一个replace into的用法:

    $_POST['config']['ipaccess'] = trim($_POST['config']['ipaccess']);
    $_POST['config']['ipbanned'] = trim($_POST['config']['ipbanned']);
    
    foreach ($_POST['config'] as $var => $value) {
      $value = trim($value);
      if(!isset($_SCONFIG[$var]) || $_SCONFIG[$var] != $value) {
        $setarr[] = "('$var', '$value')";
      }
    }
    
    if($setarr) {
      $_SGLOBAL['db']->query("REPLACE INTO ".tname('config')." (var, datavalue) VALUES ".implode(',', $setarr));
    }
    
    //REPLACE INTO uchome_config (var, datavalue) VALUES ('ipaccess', '127.0.0.1'),('ipbanned', '10.3.1')
  • 相关阅读:
    【代码笔记】iOS-书架页面
    iOS-@inerface的11条规范写法
    (转)iOS-蓝牙学习资源博文收集
    iOS App启动图不显示的解决办法.
    理解点击屏幕的事件响应--->对- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event方法的理解
    理解点击屏幕的事件响应--->对UIView的hitTest: withEvent: 方法的理解
    iOS GCD中级篇
    iOS开发UI篇—自定义layer
    iOS开发UI篇—CALayer
    iOS-绘制图层-CALayer的属性
  • 原文地址:https://www.cnblogs.com/eastson/p/2796289.html
Copyright © 2011-2022 走看看