【发布时间】:2018-09-10 02:22:44
【问题描述】:
所以我在 MySQL 中创建了一个接受整数 _prof_id 的存储过程。此代码用于将我的行动态更改为列。 这是我的代码
DELIMITER $$
CREATE PROCEDURE Get_Attendance(IN _profID INT)
BEGIN
SET SESSION group_concat_max_len = 18446744073709547520;
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'MAX(IF(date = ''',
date,
''', status_description, NULL)) AS ',
date
)
) INTO @sql
FROM current_att_view;
SET @sql = CONCAT(
'SELECT a.professor_fname, a.professor_lname, ', @sql,
' FROM professor_tbl m JOIN current_att_view a
ON m.professor_id = a.professor_id
WHERE m.professor_id = ', _profID,' Group BY entity_ID');
PREPARE stmt FROM @sql;
EXECUTE stmt;
END$$
DELIMITER ;
所以我研究发现 18446744073709547520 是 group_concat_max_len 的最大值,不能无限。但是当我调用该程序时,它给了我一个错误 Mysql Error Image,来自我的表 24th and 25th row of table image 的第 24 行和第 25 行。还有很多行要连接。我该怎么办?或者有没有其他方法可以让我动态地将行更改为列?
所以我的 current_att_view(这是一个创建的视图)结构是current_att_view,教授表结构是这样的Professor Table,我想生成一个查询来生成这样的表结构 Table Structure
当我尝试我的组 concat 代码时,输出显示为 output
【问题讨论】:
-
视图中有多少个不同的日期?
-
每个学生大约有多少次约会? (最大最小平均)
-
每学期大约 90+?因为那是出勤,所以必须记录每个日期
标签: mysql concatenation prepared-statement