尝试使用过程创建视图时出现问题。 我必须这样做,因为我需要在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