簡體   English   中英

在mysql中創建臨時表時出錯

[英]Error in creating temporary table in mysql

我在mysql中創建臨時表時遇到困難。

我有一個存儲過程,我正在創建一些sql語句,我需要將sql語句輸出創建為sql中的臨時表。 這是我的程序。 有人可以幫我嗎?

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `new_procedure`()
BEGIN

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'MAX(CASE WHEN workspaceid = ''',
      workspaceid,
      ''' then "''''" ELSE NULL end) AS ',
      CONCAT('`',workspaceid,'`')
    )
  ) INTO @sql
FROM sms.hotelings;

SET @sql = CONCAT('SELECT t.Time, ', @sql, ' 
                   FROM sms.hotelings h, sms.hotelingtime t 
                   GROUP BY t.Time');

-- PREPARE stmt FROM @sql;
-- EXECUTE stmt;
-- DEALLOCATE PREPARE stmt;

CREATE TEMPORARY TABLE IF NOT EXISTS table2 AS @sql;
select * from table2
drop temporary table table2;
END

我想使用我的@sql語句創建一個臨時表。

提前致謝。

如果要使用動態語句,則必須使用PREPARE

SET @sql = CONCAT('CREATE TEMPORARY TABLE IF NOT EXISTS table2 AS SELECT t.Time, ', @sql, ' 
                   FROM sms.hotelings h, sms.hotelingtime t 
                   GROUP BY t.Time');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SELECT * FROM table2;
DROP TEMPORARY TABLE table2;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM