使用存储过程,实现循环建表 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相关推荐

  1. mysql 备份表_MySQL中表的复制以及大型数据表的备份教程

    表复制mysql拷贝表操作我们会常常用到,下面就为您详细介绍几种mysql拷贝表的方式,希望对您学习mysql拷贝表方面能够有所帮助. 假如我们有以下这样一个表: id username passwo ...

  2. python复制mysql表_MySQL中表的复制以及大型数据表的备份教程

    CREATE TABLE newadmin ( id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY ) AS ( SELECT * FROM admin ) ...

  3. 虚拟机mysql创建一个表_MySQL:创建、修改和删除表

    其实对很多人来说对于SQL语句已经忘了很多,或者说是不懂很多,因为有数据库图形操作软件,方便了大家,但是我们不能忘记最根本的东西,特别是一些细节上的东西,可能你用惯了Hibernate,不用写SQL语 ...

  4. 如何用mysql创建orders表_MySQL学习十四创建和操纵表

    摘要: 本篇博客仅作为笔记,如有侵权,请联系,立即删除(网上找博客学习,然后手记笔记,因纸质笔记不便保存,所以保存到网络笔记). 本博讲述表的创建.更改和删除的基本知识. 一.创建表 MySQL不仅用 ...

  5. mysql怎样循环执行存储_mysql 循环存储过程

    create procedure cunchu1(a int) begin DECLARE count int default 0; -- 定义变量 DECLARE i int default 1; ...

  6. 怎么查找表_MySQL索引是怎么支撑千万级表的快速查找?

    前言 在 MySQL 官方提到,改善操作性能的最佳方法 SELECT在查询中测试的一个或多个列上创建索引.索引条目的作用类似于指向表行的指针,从而使查询可以快速确定哪些行与WHERE子句中的条件匹配, ...

  7. mysql sum提高效率_MySQL巧建sum索引帮我们提高至少100%的效率

    TABLE`a` ( `id` mediumint(8) unsigned NOT NULLAUTO_INCREMENT, `fid`smallint(6) unsigned NOT NULL DEF ...

  8. mysql如何恢复单表_MySQL如何恢复单库或单表,以及可能遇到的坑

    前言: MySQL 逻辑备份工具最常用的就是 mysqldump 了,一般我们都是备份整个实例或部分业务库.不清楚你有没有做过恢复,恢复场景可能就比较多了,比如我想恢复某个库或某个表等.那么如何从全备 ...

  9. mysql cte的好处_Mysql 8 重要新特性 - CTE 通用表表达式

    前言 Mysql 8 正式发布了,新增了很多优秀特性,之后我会挑些重点来分享. 下面和大家一起熟悉下CTE(Common Table Expressions)通用表表达式. CTE 是什么 派生表大家 ...

最新文章

  1. Nginx 安装配置【必须把文件到放到机器上】
  2. [vue] 怎么给vue定义全局的方法
  3. android 获取默认程序图标,android – PackageManager.getApplicationIcon()返回默认图标?...
  4. C#.NET学习笔记7--11---算术运算符,变量赋值,变量的交换,布尔表达式1,布尔表达式2
  5. sql语句中 and 与or 的优先级
  6. Hive Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
  7. VUE+Django项目编写
  8. c语言中 cos函数图像,cos图像(cos函数的图像)
  9. K3 LEDE踩坑专题
  10. 数据集分享 | IWR1642呼吸心跳数据集
  11. java ssm人体健康体检信息管理系统-
  12. Infor SyteLine ERP 客户端使用设置
  13. (侯捷C++)1.2面向对象高级编程(上)
  14. 学生管理系统的mysql数据库设计_MySQL数据库--学生管理系统数据库设计
  15. Nodejs+npm详细安装
  16. 玲珑杯 1138 - 震惊,99%+的中国人都会算错的问题(容斥)
  17. Kali Linux渗透测试 126 拒绝服务--Smurf 攻击
  18. 爱格升33-387-085 Neo-Flex触摸屏支架技术参数
  19. WPS怎么外链网页上的实时数据_嘿!你们通常怎么保存网页?如何实现书签在多个浏览器共享呢?...
  20. 区块链研习社北京聚会记录稿

热门文章

  1. 未来,App就是一个人的全部
  2. 早鸟票只剩3天丨为何一定要参加今年的CNCC?
  3. 太慢不能忍!CPU 又拿硬盘和网卡开刀了!
  4. 万字长文讲解编码知识,看这文就够了!| 原力计划
  5. 深度学习技术干货免费听,AirPods2任性抽...520有场AI峰会不可错过!
  6. 云原生的基石,一文读懂容器、Docker、Pod到底是什么!
  7. 《原力计划【第二季】》第 4 周周榜揭晓!!!
  8. 玩转 SpringBoot2.x 之缓存对象 | 原力计划
  9. 华为腾讯众安微众360大咖齐聚,2019中国区块链开发者大会首批议程曝光!
  10. PHP 没有真正的数组!