普通的 INSERT INTO 插入:
1
2
3
|
INSERT INTO card(cardno, cardnum) VALUES ( '1111' , '100' );
INSERT INTO card(cardno, cardnum) VALUES ( '2222' , '200' );
... |
对于普通的 INSERT 插入,如果想要保证不插入重复记录,我们只有对某个字段创建唯一约束实现(比如:cardno卡号不能重复);
那有没有不创建唯一约束,仅通过 INSERT INTO 一条语句实现的方案呢?
答案:有的, INSERT INTO IF EXISTS 具体语法如下:
1
|
INSERT INTO table (field1, field2, fieldn) SELECT 'field1' , 'field2' , 'fieldn' FROM DUAL WHERE NOT EXISTS( SELECT field FROM table WHERE field = ?)
|
其中的 DUAL 是一个临时表,不需要物理创建,这么用即可。
针对上面的card示例的改造如下:
1
2
|
INSERT INTO card(cardno, cardnum) SELECT '111' , '100' FROM DUAL WHERE NOT EXISTS( SELECT cardno FROM card WHERE cardno = '111' );
INSERT INTO card(cardno, cardnum) SELECT '222' , '200' FROM DUAL WHERE NOT EXISTS( SELECT cardno FROM card WHERE cardno = '222' );
|
搞定!
相关推荐
MySQL设置独写分离,在代码中按照如下写法,可能会出现问题 ...补充知识:MySQL INSERT插入条件判断:如果不存在则插入 我们经常需要进行sql的批量插入,要求:该条记录不存在则插入,存在则不插入。如果使用一条IN
mysql如何实现 如果存在就更新,不存在再插入
可以插入前进行判断要插入的数据是否存在业务代码如下 : INSERT INTO t_topic_vistor(user_id,topic_code) SELECT '218', 'XQ33019920170811142528217' FROM DUAL WHERE NOT EXISTS(SELECT * FROM t_topic_vistor ...
监控大型 MySQL 插入/导入的进度 介绍 如果您曾经导入过大型 mysql 表,您就会知道等待是多么令人沮丧。 这个小型 bash 脚本允许您跟踪大型 mysql 插入/导入的进度(以 % 为单位)。 用法 ./track-progress.sh ...
一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15 还是MYSQL的,一张表有还是有ID自增主键,用JDBC insert一条语句之内,怎么在JAVA...
mysql合并插入性能测试测试数据Mysql合并插入可以带来*10的吞吐提升,而事务提交没有明显的收益。下面是在一台普通MYSQL机型下的TPS实测数据:[root@10-9-136-206 mysql-bulk-insert]# ...
MySQL创建存储过程批量插入10万条数据 存储过程 1、首先防止主键冲突,我们清空表。 TRUNCATE table A_student; 2、编写存储过程 delimiter ‘$’; CREATE PROCEDURE batchInsert(in args int) BEGIN declare i int ...
通过foreach实现ibatis的批量插入
1.插入的数据来源自其他表 表A有id, cola 字段 表B有id, cola, colb…等字段,其中id都为主键,cola为相同名字的列 现想将表B中colb>1000的记录都插入表A中,SQL语句可以这样写: 代码如下: insert into A(id,cola)...
在index.jsp页面输入数据,提交到mysql——insert.jsp页面进行插入数据库的操作。 index.jsp页面代码如下: 代码如下: <%@ page language=”java” pageEncoding=”utf-8″%> <%@ page contentType=”...
是在vs中查询和插入MySQL语句如果表没有建立关系可以参考看看
若表名后不给出列名,则在VALUES子句中要给出每一列(除IDENTITY和timestamp类型的列)的值,如果列值为空,则值必须置为NULL,否则会出错。VALUES子句中的值: (1)表达式:可以是一个常量、变量或一个表达式,也...
mysql插入数据库编码解决mysql插入数据库编码解决
百家姓mysql insert 语句版本
insert_mysql:python给mysql数据库里面插入数据
本文是mysql 数据库 问题一 将表一的数据导入表二: 将表一的数据导入表二: 将表二中的数据 插入到 表一,表一的列对应表二 select 出来的列 INSERT INTO 表一 (column1, column2, column3, column4) select ...
本文实例讲述了PHP+MySQL之Insert Into数据插入用法。分享给大家供大家参考。具体如下: INSERT INTO 语句用于向数据库表中插入新纪录。 向数据库表插入数据 INSERT INTO 语句用于向数据库表添加新纪录。 语法: ...
如何在mysql从多个表中组合字段然后插入到一个新表中,通过一条sql语句实现。具体情形是:有三张表a、b、c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段。对于这种情况,我们可以使用如下的语句来...
死锁的本质是资源竞争,批量插入如果顺序不一致很容易导致死锁,我们来分析一下这个情况。为了方便演示,把批量插入改写为了多条 insert。 先来做几个小实验,简化的表结构如下 CREATE TABLE `t1` ( `id` int(11...
经过对MySQL innodb的一些性能测试,发现一些可以提高insert效率的方法,供大家参考参考。 1. 一条SQL语句插入多条数据。 常用的插入语句如: INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) ...