首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL #1243给定要执行的未知预准备语句处理程序(stmt)

MySQL #1243给定要执行的未知预准备语句处理程序(stmt)
EN

Stack Overflow用户
提问于 2013-04-18 13:12:56
回答 3查看 24.1K关注 0票数 6

我在我安装的MySQL版本上使用了这个tutorial,但它抛出了一个错误:

代码语言:javascript
复制
SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'MAX(IF(property_name = ''',
      property_name,
      ''', value, NULL)) AS ',
      property_name
    )
  ) INTO @sql
FROM
  properties;
SET @sql = CONCAT('SELECT item_id, ', @sql, ' FROM properties GROUP BY item_id');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

我将它粘贴到phpMyAdmin的SQL编辑器中。

我听从了这个建议。没有显示错误,但结果如下:

代码语言:javascript
复制
SELECT item_id
,MAX(IF(property_name = 'color', value, NULL)) AS color
,MAX(IF(property_name = 'size', value, NULL)) AS size
,MAX(IF(property_name = 'weight', value, NULL)) AS weight 
FROM properties GROUP BY item_id
EN

回答 3

Stack Overflow用户

发布于 2013-05-17 05:31:24

如果您可以访问MySQL命令行,我想您会发现您的SQL代码没有问题(只要@sql不等于NULL),问题出在phpMyAdmin上。另一个想法是将代码包装在存储过程中,然后对该过程执行CALL

票数 3
EN

Stack Overflow用户

发布于 2017-06-15 07:02:50

在查询运行之前,您需要从查询中删除DEALLOCATE PREPARE stmt;

DEALLOCATE会在语句有机会运行之前取消该语句。

票数 3
EN

Stack Overflow用户

发布于 2016-06-23 14:26:24

MySQL Workbench中尝试一下。我在phpMyAdmin中遇到了同样的问题,我在工作台中尝试了一下,它工作得很好。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16074952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档