使用存储过程,实现循环建表 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. linux之SQL语句简明教程---IN
  2. 《思科UCS服务器统一计算》一1.2 数据中心的演变
  3. 信息系统项目管理师:第6章:项目进度管理-章节真题
  4. JavaScript:从此不再怕闭包
  5. golang 日志分析_容器日志采集利器:Filebeat深度剖析与实践
  6. 【数据结构和算法笔记】AOE网和关键路径
  7. UwpDesktop!WPF也能开发Surface Dial
  8. mongoDB备份方案
  9. 鸿蒙手机系统pc版下载,鸿蒙系统os下载官网版v1.0开源版
  10. KNN算法和kd树详解(例子+图示)
  11. Springboot实战项目完结篇之商城系统之收货地址管理
  12. maya表面种植物体插件 Plant Objects on surface v1.0 下载及教程
  13. 9.7 方向导数与梯度
  14. hg8010h的调试。
  15. 计算机有没有博士学位造假,72岁老人获博士学位遭质疑学历造假 校方辟谣
  16. 第三方支付下半场:混战转共生
  17. 中科院JCR期刊分区微信公众号查询平台升级
  18. 基于对抗互信息学习特征解耦的零样本语音转换|INTERSPEECH 2022
  19. 十、SpringCloud + Alibaba 全家桶详解(目前公司最新技术)
  20. 软文外链不稳定原因总结

热门文章

  1. 在内存只有24KB的电脑上写操作系统,是怎样的体验?
  2. 那些让你爱不释手的 Spring 代码技巧
  3. 《英雄联盟》出现大面积闪退;两名 95 后大学生用脑电波写“福”字;Windows蓝屏为什么是蓝底白字? | 极客头条...
  4. 2021 年 RISC-V 会有什么大变化?
  5. 关于清理「死代码」,我有一些好方法推荐给你
  6. PyOpenCV 实战:借助视觉识别技术实现围棋终局的胜负判定
  7. 别纠结,提高代码整洁度也没那么难!
  8. 20 位行业专家共话选型经验,CSDN「选型智囊团高端研讨会」圆满落幕!
  9. 阿里文娱测试实战:机器学习+基于热度链路推荐的引流,让对比测试更精准
  10. 谈谈能带来高薪报酬的软件技术