0
我需要在一個過程中創建一個臨時表。
現在我的步驟是:
1. DROP TEMPORARY TABLE如果不存在
2.創建TEMPORARY TABLE
3.做一些與表
4. DROP TEMPORARY TABLE如果不存在如何在MySQL中輕鬆選擇臨時表?
我不想每次調用該過程時創建臨時表。
我只是想截斷臨時表,但如何選擇一些數據到現有的臨時表?
如何使吹煉程序運行得更快?
DROP PROCEDURE IF EXISTS `test`;
DELIMITER ;;
CREATE PROCEDURE `test`(IN type INT)
begin
DECLARE done INT DEFAULT 0;
DECLARE total INT DEFAULT 0;
DECLARE min_1 INT DEFAULT 0;
DECLARE min_10 INT DEFAULT 0;
DECLARE min_30 INT DEFAULT 0;
DECLARE tmp INT DEFAULT 0;
DECLARE cursor1 CURSOR FOR SELECT TIMESTAMPDIFF(MINUTE,time1,time2) as dif FROM t_test ;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
DROP TEMPORARY TABLE if EXISTS t_test;
CREATE TEMPORARY TABLE t_test AS (
SELECT optime as time1,dtime as time2
FROM tbmytest
WHERE thetpye = type);
OPEN cursor1;
REPEAT
FETCH cursor1 INTO tmp;
IF done = 1 THEN
close cursor1;
ELSE
SET total = total + 1;
IF tmp > 30 THEN
SET min_30 = min_30 + 1;
ELSEIF tmp > 10 THEN
SET min_10 = min_10 + 1;
ELSEIF tmp > -1 THEN
SET min_1 = min_1 + 1;
END IF;
END IF;
UNTIL done END REPEAT;
DROP TEMPORARY TABLE if EXISTS t_test;
SELECT min_1,min_10,min_30,total;
end;;
DELIMITER ;
不知道MySQL,但通常臨時表的會話結束後 –
自我毀滅,我不知道你是否可以期待每次 –
這就是臨時表用於列是相同的。 – Raptor