MySQL 迴圈建表和結合兩表的update
使用儲存過程,實現迴圈建表
DELIMITER //
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
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29320885/viewspace-1725304/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql 兩個表結果合拼到一個表,用常量區別不同的表MySql
- 兩表連線一:巢狀迴圈連線巢狀
- Mysql跨表更新 多表update sql語句總結MySql
- 探討兩種迴圈表示方法的區別,while迴圈與for迴圈的小總結While
- 【轉】MySQL 建表的優化策略 小結MySql優化
- ORACLE表生成MYSQL建表DDLOracleMySql
- C++迴圈賽日程表C++
- MySQL For Update導致全表排他鎖MySql
- Python 工匠:編寫地道迴圈的兩個建議Python
- c/c++ 線性表之單向迴圈連結串列C++
- c/c++ 線性表之雙向迴圈連結串列C++
- [演算法]迴圈賽日程表演算法
- mysql for update是鎖表還是鎖行MySql
- 編寫迴圈插入表資料的語句。
- MySQL三表聯查及兩表聯查MySql
- php分支和迴圈結構PHP
- MySQL 中的兩種臨時表MySql
- django 兩個表或多個表聯合查詢Django
- js列印九九乘法表(迴圈)JS
- MySQL面試題,如何書寫 update 避免表鎖?MySql面試題
- C語言——迴圈結構(for迴圈,while迴圈,do-while迴圈)C語言While
- SQL 兩個表組合查詢SQL
- MySQL建庫建表索引規範MySql索引
- 兩個歷史表的資料合併
- mysql批次建表問題MySql
- mysql三表聯合查詢(員工表,部門表,工資表)MySql
- MySQL優化表和分析表MySql優化
- MySQL 全域性表和表鎖MySql
- mysql複製表結構和資料MySql
- MySQL派生表合併最佳化的原理和實現MySql
- union all結合decode完成對兩個表的條件選擇
- 資料結構中線性表的基本操作-合併兩個線性表-按照元素升序排列資料結構
- Oracle的表連線方法(二)巢狀迴圈連線Oracle巢狀
- [MSSQL]以字元','分隔的欄位值,迴圈插入表中SQL字元
- 迴圈結構for
- 迴圈結構
- MySQL之表聯結MySql
- Mysql匯出表結構、表資料MySql