如何使用子查询的返回值名称创建数据库?

时间:2018-08-22 11:57:40

标签: mysql

我想使用子查询的返回值名称创建数据库

CREATE DATABASE (SELECT (REPLACE( REPLACE( REPLACE( standard_name, ' ', '' ), '-', '' ), '_', '' )) FROM standard_master WHERE _id = 1)

我的子查询返回值

  

SELECT(REPLACE(REPLACE(REPLACE(standard_name,'',``),'-',''   ),'_',''))FROM standard_master WHERE _id = 1

standard01

创建数据库查询给我一个语法错误

  

您的SQL语法有错误;检查手册   对应于您的MariaDB服务器版本,以使用正确的语法   在'(SELECT(REPLACE(REPLACE(REPLACE(standard_name,'','')),   '-',''),'_','''在第1行

1 个答案:

答案 0 :(得分:1)

我假设您正在尝试通过从查询中获取数据库名称来创建数据库。您可以将变量用作:

  • 声明一个变量并存储查询的输出
  • 在动态sql中使用变量创建数据库。

示例:

SELECT @id := (REPLACE( REPLACE( REPLACE( standard_name, ' ', '' ), '-', '' ), '_', '' )) FROM standard_master WHERE _id = 1;
# database name is in the @id variable
SET @SQL = CONCAT('CREATE DATABASE ', @id);
PREPARE stmt FROM @SQL;
# execute the statement that you have created
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

信用:我已将https://dba.stackexchange.com/questions/14397/creating-a-table-from-variable-names用作动态sql的参考。

希望它能回答您的查询。