这个问题其实分两个方面:

1.根据表的主键决定数据是否插入。

2.根据表的非主键决定是否插入。

假设有表DOC_INFO(医生表),联合主键HOS_ID(医院代码),DEPT_CODE(科室代码),DOC_NO(医生代码),非主键字段DOC_NAME医生姓名等。

如果根据HOS_ID和DOC_NAME判断是否插入,则写为(DULE为临时表,不需要定义)

INSERT INTO doc_info SELECT 35,12,'3850','车楠',1,'','','',null,'','2017-09-21 00:00:00',null,'','',null,null,null,null,null

FROM DUAL WHERE NOT EXISTS(SELECT 1 FROM doc_info where hos_id=35 and doc_name='车楠')

如果根据HOS_ID,DEPT_CODE,DOC_NO判断是否插入,则写为

insert into doc_info VALUES
(35,12,'3850','车楠',1,'','','',null,'','2017-09-21 00:00:00',
null,'','',null,null,null,null,null)
ON DUPLICATE KEY UPDATE add_time='2017-09-21 00:00:00'

区别:

1.根据非主键判断是否插入主要用于插入一些不按文档规范来插入的数据,用于临时补救一些缺少的数据。

2.根据主键判断是否插入主要用于更新表的某些字段的最新状态,用于需要频繁更新字段的时候。

感谢一下技术支持:

https://my.oschina.net/jsan/blog/270161/

http://www.jb51.net/article/39255.htm

mysql根据条件决定是否插入数据的更多相关文章

  1. Linux C 调用MYSQL API 函数mysql_escape_string()转义插入数据

    Title:Linux C 调用MYSQL API 函数mysql_escape_string()转义插入数据 --2013-10-11 11:57 #include <stdio.h> ...

  2. MySQL随机字符串函数批量插入数据

      简单举个例子: drop table if exists demo1 create table demo1 ( id int primary key auto_increment, name ) ...

  3. mysql存储过程批量向表插入数据

    业务需要,往某个表中批量插入数据,使用存储过程插入 首先,要建立一张mysql表,表明为phone_number, 三个字段,id 自增,number 就是要插入的表格,is_used 表示十分已经使 ...

  4. Mysql向新建表中插入数据, Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'UserName' at row 1

    在本地通过MYSQL创建测试表 CREATE Table User ( UserId int not NULL PRIMARY KEY auto_increment, //主键自增 UserName ...

  5. 使用JDBC在MySQL数据库中快速批量插入数据

    使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(10W+),如何提高效率呢? 在JDBC编程接口中Statement 有两个方法特别值得注意: void addBatch ...

  6. python3与mysql:创建表、插入数据54

    import pymysql db = pymysql.connect(host=',db='jodb1',port=3307,charset='utf8') # #测试连接开发库成功 # db = ...

  7. mysql判断条件不存在插入存在更新某字段

    insert into mst_sequence(seq_type, seq_desc, seq_date, seq_no, create_time) VALUES('CK', 'XXX', NOW( ...

  8. mysql存储过程使用游标循环插入数据

    DELIMITER $$ DROP PROCEDURE IF EXISTS `procedure_course`$$ CREATE DEFINER=`root`@`localhost` PROCEDU ...

  9. mysql中有条件的插入语句

    今天在参加笔试的过程中,看到一道题,大概意思就是说,当满足了条件就执行插入语句,当时就蒙了,之前从来都没有考虑过满足条件才插入的情况,所以一直都是这样写的 insert into table_name ...

随机推荐

  1. 智汀家庭云-开发指南Golang:设备模块

    1.品牌 品牌指的是智能设备的品牌,SA通过插件的形式对该品牌下的设备进行发现控制.理论上来说一个品牌对应一个插件服务.您可以通过项目 根目录下的品牌查看SA支持的品牌.关于插件服务的详细信息可以参考 ...

  2. 2021-06-27 & 2021-06-28 集训题解

    西克 题目传送门 Description Solution 跟 2021年省选A卷D2T1 一模一样,懒得讲了 不过这个题似乎有点卡空间,所以卡不过去 Code #include <bits/s ...

  3. 题解 GT考试

    题目传送门 题目大意 给出\(n,m,k\),以及一个长度为\(m\)的数字串\(s_{1,2,...,m}\),求有多少个长度为\(n\)的数字串\(X\)满足\(s\)不出现在其中的个数模\(k\ ...

  4. Probius+Prometheus通过API集成POD监控

    上一篇文章Probius+Kubernetes任务系统如虎添翼讲了我们把Kubernetes集成进了任务系统Probius,上线后小伙伴反馈虽然摆脱了Kubernetes-Dashboard,但还是得 ...

  5. Upload-labs通关指南(上) 1-10

    Upload-labs 所有文章和随笔(随笔将不于csdn更新)将于我的个人博客(移动端暂未适配)第一时间更新. 一些网站存在文件上传接口,一旦存在这个接口就有可能存在漏洞. 文件上传漏洞的逻辑是将一 ...

  6. python OptionParser的用法

    from optparse import OptionParser parser = OptionParser(usage = "usage: %prog [options] arg&quo ...

  7. javascript-原生-面向对象

    1.javascript面向对象程序设计 概述:javascript不想其他面向对象编程语言那样有类的概念,javascript没有类(构造函数)的概念,只有对象的概念. 2.理解javascript ...

  8. Java编程开发学习路线图(附所有免费课程+在线自测)

    转自  https://yq.aliyun.com/articles/134286?spm=5176.100239.0.0.1UfveS 摘要: 长期以来,Java一直占据TIOBE编程语言排行版第一 ...

  9. Noip模拟67 2021.10.3

    还是困,不过已经可以用脑子思考问题了 T1 数据恢复 没啥明确的算法,可以说是贪心? 考虑部分分, 链的直接扫, 对于菊花的发现只要根节点在第一个,剩下的点位置不重要 那么按照$a/b$排序,扫一遍就 ...

  10. 联赛膜你测试20 T1 Simple 题解 && NOIP2017 小凯的疑惑 题解(赛瓦维斯特定理)

    前言: 数学题,对于我这种菜B还是需要多磨啊 Simple 首先它问不是好数的数量,可以转化为用总数量减去是好数的数量. 求"好数"的数量: 由裴蜀定理得,如果某个数\(i\)不能 ...