mysql循环建表_MySQL循环建表和结合两表的update
使用存储过程,实现循环建表 DELIMITER // CREATE PROCEDURE test.create_channel_avail() BEGIN DECLARE `@i` INT(11); DECLARE
使用存储过程,实现循环建表
DELIMITER //
CREATE PROCEDURE test.create_channel_avail()
BEGIN
DECLARE `@i` INT(11);
DECLARE `@sqlstr` VARCHAR(2800);
SET `@i`=1;
WHILE `@i` < 101 DO
SET @sqlstr = CONCAT(
"CREATE TABLE channel_avail",
`@i`, "(
`prop` VARCHAR(40) ,
`stay_date` DATE,
`roomcode` VARCHAR(40),
`channel_code` VARCHAR(40),
`status` VARCHAR(1) DEFAULT 'A' ,
`createtime` DATETIME COMMENT '创建时间戳',
`updatetime` DATETIME COMMENT '更新时间戳',
PRIMARY KEY (`prop`,`stay_date`,`roomcode`,`channel_code`)
) ENGINE=INNODB
DEFAULT CHARSET=utf8;
"
);
PREPARE stmt FROM @sqlstr;
EXECUTE stmt;
SET `@i` = `@i` + 1;
END WHILE;
END;
CALL test.create_channel_avail_db();
DROP PROCEDURE test.create_channel_avail_db;
在使用MySQL数据库,update和select相结合去更新表中数据时要注意:
如 表test1
A B
1 a
2 b
3 c
表test2
A B
2 d
3 e
4 f
简单的update与select结合,,本来是希望把test1表中的a=2和a=2两行的B列修改为d和e
update from test1 set b = (select b from a where test1.a=test2.a)
注意这个语法是有个陷阱的,此时被更新的表test1中 a=2和a=3的确实被修改为d和e,可是由于a=1行的数据不在结果集里面,所有被set为null,,,也就是说除了结果集有的被更新,没有的值会被设置为null(不允许为null的列暂未测试)
使用inner join的方法就是我们想要的结果,所以要用该方法代替上面的SQL
update test1 INNER JOIN test2 ON a.id=b.id
SET test1.B=test2.B
本文永久更新链接地址:
本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉
本文系统来源:php中文网
mysql循环建表_MySQL循环建表和结合两表的update相关推荐
- mysql 备份表_MySQL中表的复制以及大型数据表的备份教程
表复制mysql拷贝表操作我们会常常用到,下面就为您详细介绍几种mysql拷贝表的方式,希望对您学习mysql拷贝表方面能够有所帮助. 假如我们有以下这样一个表: id username passwo ...
- python复制mysql表_MySQL中表的复制以及大型数据表的备份教程
CREATE TABLE newadmin ( id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY ) AS ( SELECT * FROM admin ) ...
- 虚拟机mysql创建一个表_MySQL:创建、修改和删除表
其实对很多人来说对于SQL语句已经忘了很多,或者说是不懂很多,因为有数据库图形操作软件,方便了大家,但是我们不能忘记最根本的东西,特别是一些细节上的东西,可能你用惯了Hibernate,不用写SQL语 ...
- 如何用mysql创建orders表_MySQL学习十四创建和操纵表
摘要: 本篇博客仅作为笔记,如有侵权,请联系,立即删除(网上找博客学习,然后手记笔记,因纸质笔记不便保存,所以保存到网络笔记). 本博讲述表的创建.更改和删除的基本知识. 一.创建表 MySQL不仅用 ...
- mysql怎样循环执行存储_mysql 循环存储过程
create procedure cunchu1(a int) begin DECLARE count int default 0; -- 定义变量 DECLARE i int default 1; ...
- 怎么查找表_MySQL索引是怎么支撑千万级表的快速查找?
前言 在 MySQL 官方提到,改善操作性能的最佳方法 SELECT在查询中测试的一个或多个列上创建索引.索引条目的作用类似于指向表行的指针,从而使查询可以快速确定哪些行与WHERE子句中的条件匹配, ...
- mysql sum提高效率_MySQL巧建sum索引帮我们提高至少100%的效率
TABLE`a` ( `id` mediumint(8) unsigned NOT NULLAUTO_INCREMENT, `fid`smallint(6) unsigned NOT NULL DEF ...
- mysql如何恢复单表_MySQL如何恢复单库或单表,以及可能遇到的坑
前言: MySQL 逻辑备份工具最常用的就是 mysqldump 了,一般我们都是备份整个实例或部分业务库.不清楚你有没有做过恢复,恢复场景可能就比较多了,比如我想恢复某个库或某个表等.那么如何从全备 ...
- mysql cte的好处_Mysql 8 重要新特性 - CTE 通用表表达式
前言 Mysql 8 正式发布了,新增了很多优秀特性,之后我会挑些重点来分享. 下面和大家一起熟悉下CTE(Common Table Expressions)通用表表达式. CTE 是什么 派生表大家 ...
最新文章
- Nginx 安装配置【必须把文件到放到机器上】
- [vue] 怎么给vue定义全局的方法
- android 获取默认程序图标,android – PackageManager.getApplicationIcon()返回默认图标?...
- C#.NET学习笔记7--11---算术运算符,变量赋值,变量的交换,布尔表达式1,布尔表达式2
- sql语句中 and 与or 的优先级
- Hive Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
- VUE+Django项目编写
- c语言中 cos函数图像,cos图像(cos函数的图像)
- K3 LEDE踩坑专题
- 数据集分享 | IWR1642呼吸心跳数据集
- java ssm人体健康体检信息管理系统-
- Infor SyteLine ERP 客户端使用设置
- (侯捷C++)1.2面向对象高级编程(上)
- 学生管理系统的mysql数据库设计_MySQL数据库--学生管理系统数据库设计
- Nodejs+npm详细安装
- 玲珑杯 1138 - 震惊,99%+的中国人都会算错的问题(容斥)
- Kali Linux渗透测试 126 拒绝服务--Smurf 攻击
- 爱格升33-387-085 Neo-Flex触摸屏支架技术参数
- WPS怎么外链网页上的实时数据_嘿!你们通常怎么保存网页?如何实现书签在多个浏览器共享呢?...
- 区块链研习社北京聚会记录稿
热门文章
- 未来,App就是一个人的全部
- 早鸟票只剩3天丨为何一定要参加今年的CNCC?
- 太慢不能忍!CPU 又拿硬盘和网卡开刀了!
- 万字长文讲解编码知识,看这文就够了!| 原力计划
- 深度学习技术干货免费听,AirPods2任性抽...520有场AI峰会不可错过!
- 云原生的基石,一文读懂容器、Docker、Pod到底是什么!
- 《原力计划【第二季】》第 4 周周榜揭晓!!!
- 玩转 SpringBoot2.x 之缓存对象 | 原力计划
- 华为腾讯众安微众360大咖齐聚,2019中国区块链开发者大会首批议程曝光!
- PHP 没有真正的数组!