将执行语句的结果放入MySQL的表中

时间:2015-01-09 19:14:25

标签: mysql execute

MySQL pivot efficiency

我想知道如何在MySQL中调整股票价格表。共识似乎是这不是一件好事。我原本希望每列都是一个ID号,每行都是一个日期。通过使每列成为日期并且每行都是ID号,我得到了更快的速度:

  SET @@group_concat_max_len = 1000000;
  SET @sql = NULL;
  SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'MAX(IF(ddate = ',
      'ddate',
      ',closing_price, NULL)) AS ''',
      DATE_FORMAT(ddate,'%Y%m%d'),''''
      )
  ) INTO @sql
  FROM rawdatatable;
  SET @sql = CONCAT('SELECT idnum , ', @sql, ' FROM rawdatatable GROUP BY idnum');
  SELECT @sql;
  PREPARE stmt FROM @sql;
  EXECUTE stmt;

有没有办法将EXECUTE语句的结果放入表中,其中每个列的名称是不同的ddate

2 个答案:

答案 0 :(得分:2)

更改此行

SET @sql = CONCAT('SELECT idnum , ', @sql, ' FROM rawdatatable GROUP BY idnum');

SET @sql = CONCAT('CREATE TABLE blah AS SELECT idnum , ', @sql, ' FROM rawdatatable GROUP BY idnum');

答案 1 :(得分:1)

尝试将结果放入像@Desolator这样的临时表中。在MySQL控制台

中有类似的东西
mysql>CREATE TABLE temp_result AS
      SELECT * FROM rawdatatable
        WHERE ...;