0
我有一个表像下面如何从MySQL获得结果集,如果没有列的改变
CREATE TABLE Statistics(Stat_Id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
Period VARCHAR(55),
Location VARCHAR(255),
Rate_per_SqFt INT)
INSERT INTO Statistics(Period, Location, Rate_per_SqFt)
VALUES('June', 'Location A', 2500),
('June', 'Location B', 2740),
('June', 'Location C', 3200),
('July', 'Location A', 2650),
('July', 'Location B', 2800),
('July', 'Location C', 3250),
('August', 'Location A', 2750),
('August', 'Location B', 2950),
('August', 'Location C', 3230),
('October', 'Location A', 2950),
('October', 'Location B', 3950),
('October', 'Location C', 3530);
我用下面的PROC
DROP PROCEDURE IF EXISTS test.stats_report;
CREATE PROCEDURE test.`stats_report`()
BEGIN
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'MAX(CASE WHEN Location = ''',
Location,
''' then Rate_per_SqFt ELSE 0 end) AS ',
CONCAT('`',Location,'`')
)
) INTO @sql
FROM statistics;
SET @sql = CONCAT('SELECT Period, ', @sql, '
FROM Statistics
GROUP BY Period');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END;
它使输出如下
Period Location A Location B Location C
June 2500 2740 3200
July 2650 2800 3250
August 2750 2950 3230
October 2950 3950 3530
因为我在MySQL中动态生成列过程我不知道如何使用MySQLi绑定方法或PHP中的任何方法从PHP中的结果集中获取行别的东西。
如何从Result列中获取列数不知道的行。
请注意我希望位置A,位置B和位置C,我将它指定为结果集中的列。
现在,当我添加新位置D它将作为新的列来。
你可以看看MySQL表here