Mysql 如何使用子查询的返回值名称创建数据库?
我想使用子查询的返回值名称创建数据库Mysql 如何使用子查询的返回值名称创建数据库?,mysql,Mysql,我想使用子查询的返回值名称创建数据库 CREATE DATABASE (SELECT (REPLACE( REPLACE( REPLACE( standard_name, ' ', '' ), '-', '' ), '_', '' )) FROM standard_master WHERE _id = 1) 我的子查询返回值 选择替换标准名称、、-, ,来自标准\u主机,其中\u id=1 标准01 创建数据库查询给我一个语法错误 您的SQL语法有错误;检查手册 对应于要使用的正确语法的Mar
CREATE DATABASE (SELECT (REPLACE( REPLACE( REPLACE( standard_name, ' ', '' ), '-', '' ), '_', '' )) FROM standard_master WHERE _id = 1)
我的子查询返回值
选择替换标准名称、、-,
,来自标准\u主机,其中\u id=1
标准01
创建数据库查询给我一个语法错误
您的SQL语法有错误;检查手册
对应于要使用的正确语法的MariaDB服务器版本
在“选择替换标准名称”附近,
第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;
信用:我已经使用动态sql作为参考
希望它能回答您的问题。您的问题是关于什么的,您真的是指数据库吗?如果是,什么不起作用?执行查询时您的查询说明了什么?问题已编辑。现在您了解了我的问题@joakimdanielsony您无法使用子查询执行此操作。数据库名称必须是字符串文字,您需要为此使用。您需要构建一个包含sql代码的字符串并执行它,请参阅