【发布时间】:2015-05-28 06:08:49
【问题描述】:
我正在使用 PMA 来测试一些数据透视查询(动态列),一切似乎都运行良好,但是,我只在结果中得到 #Rows,而不是实际的行集。
如何查看我的结果集?
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 - 返回实际的行集
【问题讨论】:
-
我们可以……看看声明吗?
-
@dgig 我不认为该声明与它有任何关系。如果我复制该语句并将其作为静态查询运行,我会得到结果。当通过准备好的语句和用户定义的变量执行时,我只得到行数
-
好吧@dgig 是对的,我们需要看看语句是什么......或者整个存储过程会更好。您的 prepare stmt 语法最后只缺少分号,这是我在这里看到的唯一缺少的东西...
-
@AleksandarMiladinovic 好的,声明的其余部分,但就像我说的,声明很好。我只是不知道如何让 PMA 在使用 PREPARED->EXECUTE 而不是标准的静态查询时返回实际结果集
-
我刚刚使用了准备好的语句,你的看起来还不错,它应该按预期从 SELECT 语句返回结果。我不够聪明,看不出这里有什么问题。唯一的问题可能出在第一部分 Select Group_Concat(Disti... INTO sql 中。您能否尝试将 Select 语句设置为更简单的内容为 't1.week_end' 然后看看发生了什么?逐步调试先排除一个部分。 ..希望有人能提出解决方案。GL
标签: mysql phpmyadmin prepared-statement