mysql查询-从表1中查询出来的结果重新插入到表1

原有表结构

CREATE TABLE `t_card_user` (
`id` varchar(32) NOT NULL,
`card_user_id` bigint(20) DEFAULT NULL COMMENT ‘UserID受设备最大用户数影响,范围为1--最大用户数。‘,
`card_no` bigint(20) DEFAULT NULL COMMENT ‘CardNo最大为4294967295(2^32次方)‘,
`start_time` datetime DEFAULT NULL COMMENT ‘StartTime格式填写规范:YYYY-MM-DD空格 hh:mm:ss,例如:2015-01-23 14:42:40‘,
`end_time` datetime DEFAULT NULL COMMENT ‘end_time格式填写规范:YYYY-MM-DD空格 hh:mm:ss,例如:2015-01-23 14:42:40‘,
`super_user` tinyint(4) DEFAULT NULL COMMENT ‘SuperUser是用户是否为管理员(0 普通用户, 1 管理员)‘,
`dev_id` varchar(32) DEFAULT NULL COMMENT ‘设备id‘,
`passwd` varchar(10) DEFAULT NULL COMMENT ‘Passwd只能为数字,最大长度为6位。‘,
`type` tinyint(3) DEFAULT NULL COMMENT ‘设备类型‘,
`status` tinyint(3) DEFAULT ‘2‘ COMMENT ‘0:失败,1:成功,2:已发送‘,
`active_flag` tinyint(2) DEFAULT ‘1‘ COMMENT ‘1未删除,0删除‘,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
           之前做门禁的时候,因为数据库当时设计和业务逻辑实现有问题,导致很多业主的权限无法开门。
基于这种情况,当时我们的解决方案是,通过sql查询出所需要的数据,在通过csv导出,在进行数据的拼装最后在导入数据库
        虽然当时解决了燃眉之急,但我们的项目负责人说我的这种方法很拙劣,完全可以写一个sql脚本完成,后来通过查找资料,可以使用脚本完成这一操作。

--查询并将结果封装到新创建的新表中
create table t_card_user_bk(SELECT
REPLACE (uuid(), ‘-‘, ‘‘) id,
card_user_id,
card_no,
start_time,
end_time,
super_user,
‘784368217‘ AS dev_id
FROM
t_card_user_copy
WHERE
dev_id = ‘SR-0601010000078‘
);
--将新创建的表中的数据重新插入到原来的数据库中
INSERT INTO t_card_user(id, card_user_id,card_no,start_time,end_time,super_user,dev_id) select id, card_user_id,card_no,start_time,end_time,super_user,dev_id from t_card_user_bk
 
---------------------

原文地址:https://www.cnblogs.com/hyhy904/p/11072386.html

时间: 2024-10-08 06:51:51

mysql查询-从表1中查询出来的结果重新插入到表1的相关文章

MySQL将表a中查询的数据插入到表b中

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

ORA-01219:数据库未打开:仅允许在固定表/视图中查询

好久没有登陆到Oracle的服务器了,把密码都忘记了.sql>conn sys/sys as sysdba;sql>alter user system identified by *;结果出现了ORA-01219:数据库未打开:仅允许在固定表/视图中查询--想要更改密码是遇到了错误?!sql>startup;ORA-01081: 无法启动已在运行的 ORACLE --- 请首先关闭然后再sql>shutdown immediate;sql>startup;--错误依然:在执行

如何查找MySQL中查询慢的SQL语句

本文导读:如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用--log-slow-queries[=file_name]选项启动时,mysqld 会写一个包含所有执行时间超过long_query_time 秒的SQL语句的日志文件,通过查看这个日志文件定位效率较低的SQL .下面介绍MySQL中如何查询慢的SQL语句 一.MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句 1,slow_query_

MYSQL优化派生表(子查询)在From语句中的

Mysql 在5.6.3中,优化器更有效率地处理派生表(在from语句中的子查询): 优化器推迟物化子查询在from语句中的子查询,知道子查询的内容在查询正真执行需要时,才开始物化.这一举措提高了性能: 1:之前版本(5.6.3),from语句中的子查询在explain select 查看执行计划语句执行时就会物化.它导致了部分查询执行,但explain语句的目的是获取执行计划信息,而不是执行查询 该版本物化不会在explain中发生,所以explain执行计划结果的得到更快: 2:因为上面提及

MySQL数据库中查询数据库表、字段总数量,查询数据总量

最近要查询一些数据库的基本情况,由于以前用oracle数据库比较多,现在换了MySQL数据库,就整理了一部分语句记录下来. 1.查询数据库表数量 1 #查询MySQL服务中数据库表数据量 2 SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES GROUP BY table_schema; 3 #查询指定数据库表数量 4 SELECT COUNT(*) TABLES, table_schema FROM infor

解析mysql中:单表distinct、多表group by查询去除重复记录

单表的唯一查询用:distinct多表的唯一查询用:group bydistinct 查询多表时,left join 还有效,全连接无效,在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重复记录的所有值.其原因是distinct只能返回它的目标字段,而无法返回其它字段,用distinct不能解决的话,我只有用二重循环查询来解决,而这样对于一个数据量非常大的

Day45:MySQL(多表的表记录的查询)

一.外键约束 1.创建外键 --- 每一个班主任会对应多个学生 , 而每个学生只能对应一个班主任 ----主表 CREATE TABLE ClassCharger( id TINYINT PRIMARY KEY auto_increment, name VARCHAR (20), age INT , is_marriged boolean -- show create table ClassCharger: tinyint(1) ); INSERT INTO ClassCharger (name

mysql 中查询一个字段是否为null的sql

查询mysql数据库表中字段为null的记录: select * 表名 where 字段名 is null 查询mysql数据库表中字段不为null的记录: select * 表名 where 字段名 is not null 例如: select * from table where column is null; select * from table where column is not null;

MySQL对数据表进行分组查询(GROUP BY)

MySQL对数据表进行分组查询(GROUP BY) GROUP BY关键字可以将查询结果按照某个字段或多个字段进行分组.字段中值相等的为一组.基本的语法格式如下: GROUP BY 属性名 [HAVING 条件表达式] [WITH ROLLUP] 属性名:是指按照该字段的值进行分组. HAVING 条件表达式:用来限制分组后的显示,符合条件表达式的结果将被显示. WITH ROLLUP:将会在所有记录的最后加上一条记录.加上的这一条记录是上面所有记录的总和. GROUP BY关键字可以和GROU