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 库存交易 - 获取位置的序列列表

mysql - mysql 触发问题

javascript - 如何在查找 id 数组的 api 中等待循环完成?风 sails Js

php - PHP Store不显示产品

php - 选择没有LIMIT mysql的n行

mysql - 一个客户有多个可能的物理地址,如何设计数据库模式?

mysql - 在使用 Tungsten 复制时,主数据库和从数据库之间的表是否应该相同(两者都是 MySQL 实例)

php - NOT IN 运算符不适用于 mysql 中的非主键值

sql - 如何在 Firebird 2.1 中临时禁用表中的所有约束?

php - cakephp sql 注入(inject)验证失败