我想知道如何在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
?
答案 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 ...;