mysql插入实现存在更新_mysql 记录不存在时插入 记录存在则更新的实现方法

mysql 记录不存在时插入在 MySQL 中,插入(insert)一条记录很简单,但是一些特殊应用,在插入记录前,需要检查这条记录是否已经存在,只有当记录不存在时才执行插入操作,本文介绍的就是这个问题的解决方案。

问题:我创建了一个表来存放客户信息,我知道可以用 insert 语句插入信息到表中,但是怎么样才能保证不会插入重复的记录呢?

答案:可以通过使用 EXISTS 条件句防止插入重复记录。

示例一:插入多条记录

假设有一个主键为 client_id 的 clients 表,可以使用下面的语句:

复制代码 代码如下:

INSERT INTO clients

(client_id, client_name, client_type)

SELECT supplier_id, supplier_name, 'advertising'

FROM suppliers

WHERE not exists (select * from clients

where clients.client_id = suppliers.supplier_id);

示例一:插入单条记录

复制代码 代码如下:

INSERT INTO clients

(client_id, client_name, client_type)

SELECT 10345, 'IBM', 'advertising'

FROM dual

WHERE not exists (select * from clients

where clients.client_id = 10345);

使用 dual 做表名可以让你在 select 语句后面直接跟上要插入字段的值,即使这些值还不存在当前表中。

mysql 记录不存在时插入 记录存在则更新的实现方法

复制代码 代码如下:

mysql> truncate `200702`;

Query OK, 0 rows affected (0.01 sec)

mysql> select * from `200702`;

Empty set (0.01 sec)

mysql> insert into `200702` (`domain`, `2nd_domain`, `tld`, `query_ns1`, `query_ns2`, `report_date`) values ('dnspod.com', 'dnspod', 'com', 1000, 2000, '2007-02-04') ON DUPLICATE KEY UPDATE `query_ns1` = `query_ns1` + 1000, `query_ns2` = `query_ns2` + 2000;

Query OK, 1 row affected (0.00 sec)

mysql> select * from `200702`;

+----+------------+------------+------+-----------+-----------+-----------+-----------+-------------+

| id | domain | 2nd_domain | tld | query_ns1 | query_ns2 | query_ns3 | query_ns4 | report_date |

+----+------------+------------+------+-----------+-----------+-----------+-----------+-------------+

| 1 | dnspod.com | dnspod | com | 1000 | 2000 | 0 | 0 | 2007-02-04 |

+----+------------+------------+------+-----------+-----------+-----------+-----------+-------------+

1 row in set (0.00 sec)

mysql> insert into `200702` (`domain`, `2nd_domain`, `tld`, `query_ns1`, `query_ns2`, `report_date`) values ('dnspod.com', 'dnspod', 'com', 1000, 2000, '2007-02-04') ON DUPLICATE KEY UPDATE `query_ns1` = `query_ns1` + 1000, `query_ns2` = `query_ns2` + 2000;

Query OK, 2 rows affected (0.01 sec)

mysql> select * from `200702`;

+----+------------+------------+------+-----------+-----------+-----------+-----------+-------------+

| id | domain | 2nd_domain | tld | query_ns1 | query_ns2 | query_ns3 | query_ns4 | report_date |

+----+------------+------------+------+-----------+-----------+-----------+-----------+-------------+

| 1 | dnspod.com | dnspod | com | 2000 | 4000 | 0 | 0 | 2007-02-04 |

+----+------------+------------+------+-----------+-----------+-----------+-----------+-------------+

1 row in set (0.01 sec)

mysql>当然,建表的时候,千万别忘记了给domain做一个unique

UNIQUE KEY `domain` (`domain`,`report_date`)

本文标题: mysql 记录不存在时插入 记录存在则更新的实现方法

本文地址: http://www.cppcns.com/shujuku/mysql/43998.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/498034.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里智能对话交互实践与创新

来源:人工智能头条 作者 :孙健,李永彬,陈海青,邱明辉 概要:过去 20 多年,互联网及移动互联网将人类带到了一个全新的时代,如果用一个词来总结和概括这个时代的话,「连接」…

HT 相关

设置系统语言——日语测试用 解决方案 按照以下说明将系统语言环境更改为您所需的语言: 更改 Windows XP、Vista 和 Windows 7 的系统位置 注:必须以具有管理权限的用户身份登录。 单击开始 > 控制面板。 Windows 7 和 Vista:依次单击…

IDC Future Scape : 2018年全球物联网十大趋势性预测,5G将加速IoT发展

作者:Dudu 概要:预计到2021年前后,5G、物联网数据分析、物联网支出管理、区块链、物联网服务将成为市场主流。 2019年,IoT行业中,边缘基础设施将成为市场主流,多用于单个部门的业务板块中。 到了2020年&am…

mysql 解释 游标赋值_Mysql_游标

MySQL中的游标是一个十分重要的概念。游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。MySQL中的游标的语法如下:DECLARE cursor-name CURSOR FOR…

意见征集,世界AI智商评测量标准2018年新版讨论方案

来源:未来智能实验室 对于本次2018年世界AI智商评测的量表更新 ,有两个问题希望得到您的意见:1.如果按上述智力因素进行增加,您认为他们的权重应该是多少,其他已有的智力因素权重应该调整为多少;2.您认为考…

mysql查看system函数_mysql系统信息函数

1、VERSION() 返回数据库的版本号SELECT VERSION() -- 5.0.67-community-nt2、CONNECTION_ID() 返回服务器的连接数SELECT CONNECTION_ID() -- 33、DATABASE()、SCHEMA 返回当前数据库名4、USER()、SYSTEM_USER()、SESSION_USER()、CURRENT_USER()、CURRENT_USER 返回当前用户S…

chm文件大不开

1、如果提示是:如果提示是Internet Explorer 不能链接到您请求的网页或者打开后“页面无法显示”。请下载chm.reg,执行。或在要打开的CHM文件上右键属性,会在底下属性中多了一个“解除锁定”,点击后就可以正常显示了。 chm.reg内容…

人工智能的价值地图:AI产业增强革命的模式与路径

来源:腾讯研究院 概要:人工智能所蕴含的力量让人向往又恐惧。2016年的两次人机大战第一次让公众认识到人工智能的强大力量。 “智造”并不是一个新词,几年前,我们可以看到数字技术从虚拟世界向实体世界渗透。3D打印、激光切割等一…

怎样打开mysql进程数_mysql查看最大打开进程数

今天在群里刚刚知道这个查看打开最大进程数的命令,下面来看一下吧~ cat /proc/27095/limits | grep Max open files 查看mysql最大打开进程数的命令 我们应该如何知道那个标黄的进程呢,想起来前几天刚刚学过的命令了吗,对的,就是l…

jsp 页面获取action 属性的方法

1、代码法 <%ValueStack valueStack (ValueStack)request.getAttribute("struts.valueStack");String[] books (String[])valueStack.findValue("books");for(String book : books){%><tr><td>BookName:</td><td><%boo…

那么多GAN哪个好?谷歌大脑泼来冷水:都和原版差不多

来源&#xff1a;量子位 概要&#xff1a;从2014年诞生至今&#xff0c;生成对抗网络&#xff08;GAN&#xff09;热度只增不减&#xff0c;各种各样的变体层出不穷。 从2014年诞生至今&#xff0c;生成对抗网络&#xff08;GAN&#xff09;热度只增不减&#xff0c;各种各样的…

java 中获取file的长度为0_Java核心技术梳理-IO

一、引言IO(输入/输出)&#xff0c;输入是指允许程序读取外部数据(包括来自磁盘、光盘等存储设备的数据)、用户输入数据。输出是指允许程序记录运行状态&#xff0c;将程序数据输出到磁盘、光盘等存储设备中。IO的主要内容包括输入、输出两种IO流&#xff0c;这两种流中又分为字…

Exception 和解决办法

1、 org.xml.sax.SAXParseException: The string "--" is not permitted within comments. 从错误描述来看发现是&#xff38;&#xff2d;&#xff2c;文件中的注释引起的异常&#xff0c;去掉配置文件中的中文注释或改用英文描述则可以通过后来发现是配置文件中采…

福布斯:2018年将改变世界的九股科技大趋势

来源&#xff1a;咕噜网 概要&#xff1a;2018年又会有哪些重要科技趋势会改变世界呢&#xff1f;《福布斯》杂志今天发表文章&#xff0c;公布了将会在明年及日后改变世界的9股科技大趋势。 据《福布斯》杂志北京时间12月4日报道&#xff0c;2017年即将结束。这一年&#xff0…

linux 备份mysql并上传_linux备份数据库并上传至远程服务器(定时执行shell进行ftp上传)...

#start shell 脚本#!/bin/bash#定义备份数据库时使用的用户名和密码db_user"root"db_passwd"111111"#定义FTP服务器地址、用户名、密码、目录ftp_url113.108.8.80ftp_userftpuserftp_passwd111111ftp_dir/mysql_backup/xxxx#数据库备份的路径backup_dir/ho…

BigDecimal 运用示例 与 DecimalFormat

代码&#xff1a; BigDecimal bd new BigDecimal( "99.11" );System.out.println( "scale" bd.scale() );System.out.println(bd);bd new BigDecimal( 5526 );bd bd.divide( new BigDecimal (1000) );System.out.println( "scale" bd.scale…

NIPS 2017上演:Google大神们将带来哪些「精彩」?

来源&#xff1a;雷克世界 作者&#xff1a;Christian Howard 编译&#xff1a;嗯~阿童木呀、我是卡布达 概要&#xff1a;Google在2017年NIPS大会将展现出色的影响力&#xff0c;约有450多名Google员工将会通过技术讲座、海报、研讨会、比赛以及教程等方式向更广泛的学术研究…

dict keys 取最后一个_一步一步学Python3(小学生也适用) 第十三篇: 字典Dict类型

前面我们已经学习了Python的字符串&#xff0c;列表&#xff0c;元组&#xff0c;这一篇我们将学习字典&#xff0c;字典的使用频率是非常高&#xff0c;跟前面几篇一样&#xff0c;只要你用Python编程&#xff0c;就避不开Python字典。一、创建字典字典由键&#xff08;key&am…

select ... into ... 与 insert into .... select .... 语句

select ... into ... 示例&#xff1a; select t.SLIP_ID, t.CASE_ID, t.BARCODE, t.SHP_WT1, t.SHP_WT2, t.PK_DATE, t.REG_DATE, t.UPDATE into logizard.T06_CASE_DTL_TRN from logizard.T04_CASE_DTL_WK as t where t.SLIP_ID111缺陷&#xff1a;被插入数据的表&a…

三份研究报告,聚焦 AI 的三大主要话题

来源&#xff1a;36氪 概要&#xff1a;随着人工智能技术呈现出势不可挡的发展之势&#xff0c;围绕 AI 进行的相关研究数量也越来越多。 随着人工智能技术呈现出势不可挡的发展之势&#xff0c;围绕 AI 进行的相关研究数量也越来越多。 关于人工智能及其对经济的影响方面&…