mysql 从工作 "prepare"语句创建 View

标签 mysql sql

我有一个 SQL 查询

SELECT CONCAT(
  'SELECT `table`.id', GROUP_CONCAT(CONCAT('
     ,    `t_', REPLACE(name, '`', '``'), '`.value
         AS `', REPLACE(name, '`', '``'), '`'
   ) SEPARATOR ''),
 ' FROM `table` ', GROUP_CONCAT(CONCAT('
     LEFT JOIN `table`   AS `t_', REPLACE(name, '`', '``'), '`
            ON `table`.id = `t_', REPLACE(name, '`', '``'), '`.id
           AND `t_', REPLACE(name, '`', '``'), '`.name = ', QUOTE(name)
   ) SEPARATOR ''),
 ' GROUP BY `table`.id'
) INTO @qry FROM (SELECT DISTINCT name FROM `table`) t;

PREPARE stmt FROM @qry;
EXECUTE stmt;

来自 this question here.老实说,我几乎不理解它,我很惊讶它甚至是可能的,但是在修改了一些名称之后它完全满足了我的需要,但我在“ View ”中需要它。

我如何将它添加到我的数据库中的 View 中?

非常感谢

最佳答案

我想这个问题已经问了一段时间了,但我知道这是可能的。

如下所示,对您准备好的查询的最后一部分稍作修改将帮助您实现目标:

只需修改PREPARE stmt

SET @qrys = CONCAT('CREATE OR REPLACE VIEW "put_your_view_name_without_quote" AS ',@qry);
PREPARE stmt FROM @qrys;
EXECUTE stmt;

关于mysql 从工作 "prepare"语句创建 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16726456/

相关文章:

mysql - 我如何在 Cassandra 中将此 MySQL 表建模为 super 列族?

php - 'a.Email Address' 错误 MySQL 中的未知列 'field list'

mysql - 数据库为一所功能性学校设计一个简单的数据库

mysql - 如何进行 SQL 查询,其中 WHERE 中将出现 2 次 "AND"

mysql - 需要将 2 个查询合并为 1 个

php - 根据列表长度将来自 mysql 的结果列表拆分为单独的列表

sql - SQL 中合并相邻行?

mysql - SQL 中字段对的首次出现

php - 如何查询多个表并使用附加

mysql - 存储数据库记录的数量是多余的吗?