最近在项目中遇到了这样的一个问题“: 在mysql数据库中需要每次插入的时候不能插入三个字段都相同的记录.在这里使用到了 insert into if not exists 和insert ignore into 这两种方式,既然使用到了就在这里总结一下吧,毕竟mysql中的函数或者关键字太多了,使用到了就将相关的都总结一下.分享出来各位爷参考参考. 先说我自己项目中使用到的,然后将所有可用的方法总结一下. 在项目中主要是用到了 在多个线程中需要循环的将数据插入,而且根据指定的几个字段是可以唯…
想要插入一条数据,要避免重复插入,又不想折腾两回数据库连接操作,可以参考如下办法. INSERT INTO table(column1,column2,column3 ...columnN) SELECT value1,value2,value3 ...valueN FROM dual WHERE NOT EXISTS( SELECT * FROM table WHERE value = ? ); dual是为了构建查询语句而存在的表,Oracle中很常见,配合INSERT ... SELECT…
MySQL多表插入: INSERT INTO tdb_goods_cates (cate_name) SELECT goods_cate FROM tdb_goods GROUP BY goods_cate; --INSERT INTO 表名 (列名)查询对应的列 MS SQL 多表插入: 与MySQL 的一样 MySQL的多表关联更新 UPDATE dtb_goods INNER JOIN tdb_goods_cates ON goods_cate = cate_name SET goods_…
转载 MySQL在 5.0版本中引入新特性:索引合并优化(Index merge optimization),当查询中单张表可以使用多个索引时,同时扫描多个索引并将扫描结果进行合并. 该特新主要应用于以下三种场景: 1. 对OR语句求并集,如查询SELECT * FROM TB1 WHERE c1="xxx" OR c2=""xxx"时,如果c1和c2列上分别有索引,可以按照c1和c2条件进行查询,再将查询结果合并(union)操作,得到最终结果…
INSERT INTO new_schedules_spider_shipsname ( ID,SCAC,VESSEL,VOYAGE,SERVICE_NAME,MD5 ) SELECT NULL,%s,%s,%s,%s,%s FROM DUAL WHERENOT EXISTS ( SELECT * FROM new_schedules_spider_shipsname s WHERE s.MD5 = %s and s.STATE =0 )…
创建表dim_date: create table `dim_date` ( `year` int (20), `month` int (20), `day` int (20), `week` int (11), `quarter` int (20), `date_id` date ); mysql中创建存储过程createDates 插入每一天的日期(我是从2015-10-01开始后的1000天,大概到2018年) DELIMITER $$ CREATE PROCEDURE `view`.`c…
mysql中in查询条件的时候,很多时候排序是不规则的,如何按照in里面的条件进行排序呢? mysql中给出了办法,在in后面加order by field,order by field的首个条件是按照哪个字段排序,然后把in里面的条件复制进去,就可以排序了,希望可以帮助大家! select * from service_type st where st.id in (5,9,7,10,8) order by field(id,5,9,7,10,8)…
如何在mysql从多个表中组合字段然后插入到一个新表中,通过一条sql语句实现.具体情形是:有三张表a.b.c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段.对于这种情况,我们可以使用如下的语句来实现: INSERT INTO db1_name(field1,field2) SELECT field1,field2 FROM db2_name 当然,上面的语句比较适合两个表的数据互插,如果多个表就不适应了.对于多个表,我们可以先将需要查询的字段join起来,然后组成一个视图后再…
如何在mysql从多个表中组合字段然后插入到一个新表中,通过一条sql语句实现.具体情形是:有三张表a.b.c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段.对于这种情况,我们可以使用如下的语句来实现: INSERT INTO db1_name(field1,field2) SELECT field1,field2 FROM db2_name 当然,上面的语句比较适合两个表的数据互插,如果多个表就不适应了.对于多个表,我们可以先将需要查询的字段join起来,然后组成一个视图后再…
1. 语法介绍 有三张表a.b.c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段.对于这种情况,可以使用如下的语句来实现: INSERT INTO db1_name (field1,field2) SELECT field1,field2 FROM db2_name 上面的语句比较适合两个表的数据互插,如果多个表就不适应了.对于多个表,可以先将需要查询的字段JOIN起来,然后组成一个视图后再SELECT FROM就可以了: INSERT INTO a (field1,…
MySQL将表a中查询的数据插入到表b中 假设表b存在 insert into b select * from a; 假设表b不存在 create table b as select * from a; 扩展: 将b表中的某写字段值插入到a表中 insert into a (userID,userName) select b.userID,b.userName from tr_ajax_chat_messages; 将a表和b表userID相等的值保存到a表 update a set a.use…
mysql中 REPLACE INTO 和 INSERT INTO 的区别 REPLACE INTO 和 INSERT INTO 功能类似,都是像表中插入数据,不同点在于:REPLACE INTO 首先尝试插入数据到表中: 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据. 否则,直接插入新数据. 要注意的是: 插入数据的表必须有主键或者是唯一索引!否则的话,REPLACE INTO 会直接插入数据,这将导致表中出现重复的数据. 除非表有一个PRIMARY…
insert into user (username,password) VALUES ('); //获取刚插入的自增长id的值 select last_insert_id(); 在MySQL中,使用auto_increment类型的id字段作为表的主键,并用它作为其他表的外键,形成“主从表结构”,这是数据库设计中常见的用法.但是在具体生成id的时候,我们的操作顺序一般是:先在主表中插入记录,然后获得自动生成的id,以它为基础插入从表的记录.这里面有个困难,就是插入主表记录后,如何获得它对应的i…