Execute语句只返回#Rows

时间:2015-03-24 19:12:32

标签: mysql phpmyadmin prepared-statement

我正在使用PMA来测试一些数据透视查询(动态列),但是一切似乎都运行得很好,但我只在结果中获得#行,而不是实际的行集。

如何查看结果集?

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'MAX(IF(t.week_end = ''',
      t1.week_end,
      ''', t.st_hours, NULL)) AS ''',
      t1.week_end, '\''
    )
  ) INTO @sql
FROM timesheets t1 WHERE t1.week_end > "2015-03-01";

SET @sql = CONCAT('SELECT t.assignment_id
                    , ', @sql, ' 
                   FROM timesheets t
                  LEFT JOIN timesheets t1 ON t.timesheet_id = t1.timesheet_id
                   GROUP BY t.assignment_id');

PREPARE stmt FROM @sql;
EXECUTE stmt;

返回# Rows: 440

SELECT * FROM table - 返回实际的行集

1 个答案:

答案 0 :(得分:3)

这将在最新的PHPMyAdmin版本中解决,应该在4.6版本中发布。

  

[Prepared statements]可以在查询中发送,因为这在phpMyAdmin中现在非常有用。唯一的问题是显示结果。如果执行上述所有操作,则只从最后一个查询(DEALLOCATE)获得结果,该结果显示0行,但如果您在没有DEALLOCATE的情况下执行此操作,则报告会获得1行,但不会显示。

Reference