Mysql: pivot table 在 sqlfiddle 中工作但不在 phpmyadmin 中工作
Mysql: pivot table working in sqlfiddle but not working in phpmyadmin
我有一个在 sqlfiddle 中工作的关键 table 代码,当我在 phpmyadmin 中将它带回我的数据库时,我似乎无法使查询工作。
当我在我的 localHost phpmyadmin 中 运行 时,查询变成如下所示:
SET @@group_concat_max_len = 5000;# MySQL returned an empty result set (i.e. zero rows).
SET @sql = NULL;# MySQL returned an empty result set (i.e. zero rows).
SELECT GROUP_CONCAT(DISTINCT
CONCAT('MAX(IF(hw_id = ', hw_id, ', score, -1)) AS ',
CONCAT('`hw', hw_id, '`'))) INTO @sql
FROM mk;# 1 row affected.
SET @sql = CONCAT('SELECT st.id, ', @sql,
' FROM st LEFT JOIN mk ON st.id = mk.st_id GROUP BY st.id');
# MySQL returned an empty result set (i.e. zero rows).
PREPARE stmt FROM @sql;# MySQL returned an empty result set (i.e. zero rows).
EXECUTE stmt;# Rows: 3
DEALLOCATE PREPARE stmt;# MySQL returned an empty result set (i.e. zero rows).
如您所见,我也更改了 group_concat_max_len...但没有任何更改...
将其构建为存储过程,然后在 phpmyadmin 中执行。
如果您想追查失败的 phpadmin,请添加 SELECT @sql;
并查看是否获得所需的查询。
在分析 phpMyAdmin bug reported for this question 时,我意识到此查询在某些服务器上有效而在其他服务器上失败,因此 MySQL 服务器不兼容而不是 phpMyAdmin 中的问题。不同的 MySQL 服务器版本在这种情况下表现不同(严格来说不遵循 MySQL 文档定义的语法)。
我测试过:
- 在 MySQL 5.5.46 中查询在 phpMyAdmin 和命令行中均失败
- 在 MariaDB 10.0.24 中,查询在 phpMyAdmin 和命令行中工作正常
我有一个在 sqlfiddle 中工作的关键 table 代码,当我在 phpmyadmin 中将它带回我的数据库时,我似乎无法使查询工作。
当我在我的 localHost phpmyadmin 中 运行 时,查询变成如下所示:
SET @@group_concat_max_len = 5000;# MySQL returned an empty result set (i.e. zero rows).
SET @sql = NULL;# MySQL returned an empty result set (i.e. zero rows).
SELECT GROUP_CONCAT(DISTINCT
CONCAT('MAX(IF(hw_id = ', hw_id, ', score, -1)) AS ',
CONCAT('`hw', hw_id, '`'))) INTO @sql
FROM mk;# 1 row affected.
SET @sql = CONCAT('SELECT st.id, ', @sql,
' FROM st LEFT JOIN mk ON st.id = mk.st_id GROUP BY st.id');
# MySQL returned an empty result set (i.e. zero rows).
PREPARE stmt FROM @sql;# MySQL returned an empty result set (i.e. zero rows).
EXECUTE stmt;# Rows: 3
DEALLOCATE PREPARE stmt;# MySQL returned an empty result set (i.e. zero rows).
如您所见,我也更改了 group_concat_max_len...但没有任何更改...
将其构建为存储过程,然后在 phpmyadmin 中执行。
如果您想追查失败的 phpadmin,请添加 SELECT @sql;
并查看是否获得所需的查询。
在分析 phpMyAdmin bug reported for this question 时,我意识到此查询在某些服务器上有效而在其他服务器上失败,因此 MySQL 服务器不兼容而不是 phpMyAdmin 中的问题。不同的 MySQL 服务器版本在这种情况下表现不同(严格来说不遵循 MySQL 文档定义的语法)。
我测试过:
- 在 MySQL 5.5.46 中查询在 phpMyAdmin 和命令行中均失败
- 在 MariaDB 10.0.24 中,查询在 phpMyAdmin 和命令行中工作正常