zoukankan      html  css  js  c++  java
  • mysql批量更新、多表更新、多表删除

    本文介绍下,mysql中进行批量更新、多表更新、多表删除的一些实例,有需要的朋友可以参考下。

    本节主要内容:
    mysql的批量更新、多表更新、多表删除

    一,批量更新:
     

    复制代码代码示例:
    update tepoi,pinf set tepoi.x=pinf.fx,tepoi.y=pinf.fy
    where tepoi.pid=pinf.dmgis_id and tepoi.pid>10000;

    假设有表a,b,其结构为:
     

    复制代码代码示例:
    a(id,email,name)   b(id,email)
    update   a inner join   b on a.id=b.id set
    update tableA inner join tableB on tableA.FieldA=tableB.FieldB(update中使用inner join)
    set
    tableA.字段=值,
    tableB.字段=值

    二,多表更新
    在 MySQL 3.23 中,你可以使用 LIMIT # 来确保只有给定的记录行数目被更改。

    如果一个 ORDER BY 子句被使用(从 MySQL 4.0.0 开始支持),记录行将以指定的次序被更新。这实际上只有连同 LIMIT 一起才有用。

    从 MySQL 4.0.4 开始,你也可以执行一个包含多个表的 UPDATE 的操作: 
     

    复制代码代码示例:
    UPDATE items,month SET items.price=month.price
    WHERE items.id=month.id;

    注意:多表 UPDATE 不可以使用 ORDER BY 或 LIMIT。

    三,多表删除

    第一个多表删除格式从 MySQL 4.0.0 开始被支持。第二个多表删除格式从 MySQL 4.0.2 开始被支持。

    仅仅在 FROM 或 USING 子句 之前 列出的表中的匹配记录行被删除。
    要以从多个表中同时删除记录行,并且同样可以有其它的表用于检索。

    在表名后的 .* 仅仅是为了兼容 Access: 
     

    复制代码代码示例:
    DELETE t1,t2 FROM t1,t2,t3 WHERE t1.id=t2.id AND t2.id=t3.id
    or
    DELETE FROM t1,t2 USING t1,t2,t3 WHERE t1.id=t2.id AND t2.id=t3.id

    以上仅仅从 t1 和 t2 表中删除匹配的记录行。

    如果一个 ORDER BY 子句被使用(从 MySQL 4.0.0 开始支持), 记录行将以指定的次序删除。
    这实际上只有连同 LIMIT 一起才有用。

    例子:
     

    复制代码代码示例:
    DELETE FROM somelog
    WHERE user = 'jcole'
    ORDER BY timestamp
    LIMIT 1

    将删除匹配 WHERE 子句的,并且最早被插入(通过 timestamp 来确定)的记录行。

    DELETE 语句的LIMIT rows 选项是 MySQL 特有的,它告诉服务器在控制权被返回到客户端之前可被删除的最大记录行数目。
    这可以用来确保一个特定的 DELETE 命令不会占用太长的时间。

    可以简单地重复使用 DELETE 命令,直到被影响的记录行数目小于 LIMIT 值。

    说明:
    从 MySQL 4.0 开始,在 DELETE 语句中可以指定多个表,用以从一个表中删除依赖于多表中的特殊情况的记录行。
    然而,在一个多表删除中,不能使用 ORDER BY 或 LIMIT。
    本文原始链接:http://www.jbxue.com/db/13130.html

  • 相关阅读:
    yzoj P2344 斯卡布罗集市 题解
    yzoj P2350 逃离洞穴 题解
    yzoj P2349 取数 题解
    JXOI 2017 颜色 题解
    NOIP 2009 最优贸易 题解
    CH 4302 Interval GCD 题解
    CH4301 Can you answer on these queries III 题解
    Luogu2533[AHOI2012]信号塔
    Luogu3320[SDOI2015]寻宝游戏
    Luogu3187[HNOI2007]最小矩形覆盖
  • 原文地址:https://www.cnblogs.com/linuxnotes/p/3393564.html
Copyright © 2011-2022 走看看