关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » MySQL »详解MYSQL中无重复插入数据更新语法

    详解MYSQL中无重复插入数据更新语法

    2010-09-09 15:32:00 出处:ITJS
    分享

    更新操作是使用数据库最常见的操作之一,下面将为您详细介绍MYSQL中无重复插入数据更新语法,供您参考,希望对您学习数据更新能有所帮助。

    如果你指定了ON DUPLICATE KEY UPDATE命令语句,那么在唯一索引或者主索引的作用下将不插入与数据库记录重复的内容,但同时会更新数据库中的旧记录。例如,字段a被声明为唯一索引并且里面只包含有值为1的记录,以下两个语句会达到同样的效果:

    一、INSERT INTO table (a,b,c) VALUES (1,2,3)

       ON DUPLICATE KEY UPDATE c=c+1;

    二、UPDATE table SET c=c+1 WHERE a=1;

    受影响的是a=1的行,当插入时c的值加1。

    如果字段b也是唯一的话,这个插入语句将和以下语句的效果一样:

    UPDATE table SET c=c+1 WHERE a=1 OR b=2 LIMIT 1;

    如果a=1 OR b=2匹配了不止一行,也只是第一行被更新。一般地,如果表中有多个唯一索引的话,你应该避免在使用用ON DUPLICATE KEY子句。

    你可以在插入更新语句 INSERT ... UPDATE 中使用 VALUES(字段名) 函数去关联某一行记录。也就是说, VALUES(字段名) 可以用在UPDATE语句中去更新某字段的值而不会出现重复键。这个函数在多行插入中尤其有用。但是函数 VALUES() 仅当用在 INSERT ... UPDATE 语句中才有意义,否则会返回NULL。例如:

    INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)

    ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);

    这个语句和下面两个是同效果的:

    INSERT INTO table (a,b,c) VALUES (1,2,3)

    ON DUPLICATE KEY UPDATE c=3;

    INSERT INTO table (a,b,c) VALUES (4,5,6)

    ON DUPLICATE KEY UPDATE c=9;

    如果表中包含有一个自动递增字段AUTO_INCREMENT,并用 INSERT ... UPDATE 插入一行,函数 LAST_INSERT_ID()会返回AUTO_INCREMENT的值,如果这个语句更新某一行, LAST_INSERT_ID() 就没有意义了。但是,你可以通过用 LAST_INSERT_ID(expr)使它变得有意义,如果id字段是自动递增栏的话,使 LAST_INSERT_ID() 对更新语句有意义的方法如下:

    INSERT INTO table (a,b,c) VALUES (1,2,3)

    ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;

    如果你使用 ON DUPLICATE KEY UPDATE 语句的话,延迟执行选项 DELAYED 将被忽略。

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    Edge浏览器百度被劫持/篡改怎么办,地址后边跟着尾巴#tn=68018901_7_oem_dg

    Google Chrome 在 iPhone 上新增了 Safari 数据导入选项

    Windows 11专业版 KMS工具激活产品密钥的方法

    DEDECMS安全策略官方出品

    Microsoft Text Input Application 可以关闭吗?

    新版本QQ如何关闭自带的浏览器?

    C++编程语言中continue的用法和功能,附举例示范代码

    c++ map 的数据结构、基本操作以及其在实际应用中的使用。

    C语言如何避免内存泄漏、缓冲区溢出、空指针解引用等常见的安全问题

    C语言中的break语句详解

    IT头条

    马斯克2026最新采访总结:2040年,全球机器人数量将突破100亿台

    23:52

    专家解读|规范人工智能前沿业态健康发展的新探索:解读《人工智能拟人化互动服务管理暂行办法》

    00:54

    用至强 6高存力搞定MoE卸载!

    17:53

    美国将允许英伟达向中国“经批准的客户”出售H200 GPU

    02:08

    苹果与微信就15%手续费达成一致?腾讯未置可否

    22:00

    技术热点

    PHP 和 Node.js 的10项对比挑战

    Javascript闭包深入解析及实现方法

    windows 7、windows 8.1手动增加右键菜单功能技巧

    MYSQL出错代码大汇总

    windows 7假死机怎么办 windows 7系统假死机的原因以及解决方法

    Ubuntu(Linux)下配置IP地址的方法

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。