mysql中创建视图语法错误_mysql - 使用过程MySQL创建视图时出错 - 堆栈内存溢出

尝试使用过程创建视图时出现问题。 我必须这样做,因为我需要在MySQL中发挥作用,将表的行转换为另一个表的列。 该查询效果很好,但是当我将其放在“ CREATE VIEW”语句中时,它给了我错误。

这是带有CREATE视图的查询

CREATE VIEW `Untitled` AS

SET @sql = NULL;

SELECT

GROUP_CONCAT(DISTINCT

CONCAT(

'MAX(IF(formazioni_persone.id_formazione = ',

formazioni.id,

', true, false)) AS "',

formazioni.titolo,'"'

)

) INTO @sql

FROM formazioni;

SET @sql = CONCAT('SELECT persone.*, ', @sql, ' FROM persone INNER JOIN formazioni_persone ON persone.id = formazioni_persone.id_persona GROUP BY persone.id');

PREPARE stmt1 FROM @sql;

EXECUTE stmt1;

DEALLOCATE PREPARE stmt1;

没有CREATE VIEW Untitled AS的查询效果很好

没有CREATE VIEW Untitled AS的查询效果很好。 我已经尝试在CREATE VIEW里面创建一个TEMP TABLE,但是什么也没有。 也尝试使用这样的分隔符,但是什么也没有

DELIMITER $$

CREATE VIEW `Untitled` AS

SET @sql = NULL;

SELECT

GROUP_CONCAT(DISTINCT

CONCAT(

'MAX(IF(formazioni_persone.id_formazione = ',

formazioni.id,

', true, false)) AS "',

formazioni.titolo,'"'

)

) INTO @sql

FROM formazioni;

SET @sql = CONCAT('SELECT persone.*, ', @sql, ' FROM persone INNER JOIN formazioni_persone ON persone.id = formazioni_persone.id_persona GROUP BY persone.id');

PREPARE stmt1 FROM @sql;

EXECUTE stmt1;

DEALLOCATE PREPARE stmt1;

END $$

DELIMITER ;

错误:1064-您的SQL语法有错误; 检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第2行的'SET @sql = NULL'附近使用,时间:0.082000s

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值