Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 请解释这些SQL语句_Mysql_Prepared Statement_Dynamic Sql_Information Schema - Fatal编程技术网

Mysql 请解释这些SQL语句

Mysql 请解释这些SQL语句,mysql,prepared-statement,dynamic-sql,information-schema,Mysql,Prepared Statement,Dynamic Sql,Information Schema,请给我解释一下下面的例子 SELECT GROUP_CONCAT(COLUMN_NAME) FROM information_schema.`COLUMNS` C WHERE table_name = 'table_name' AND COLUMN_NAME =('columns_name') INTO @COLUMNS; SET @table = 'table_name'; SET @s = CONCAT('SELECT ',@columns,' FROM ', @table);

请给我解释一下下面的例子

SELECT GROUP_CONCAT(COLUMN_NAME)
FROM information_schema.`COLUMNS` C 
WHERE table_name = 'table_name'
  AND COLUMN_NAME =('columns_name') INTO @COLUMNS;

SET @table = 'table_name';

SET @s = CONCAT('SELECT ',@columns,' FROM ', @table);

PREPARE stmt FROM @s;

这个模式是基于特定表中列的名称创建动态(用MySQL术语编写)查询
INFORMATION\u SCHEMA
是一个内置数据库,其中的只读表描述MySQL服务器上所有数据库中的所有表

序列中的第一个查询检索局部变量
@COLUMNS
中的文本字符串,其值如下

      id,name,value,description
对于名为
table\u name
且包含这四列的表

第三个函数检索局部变量
@s
中的字符串,其值包含如下查询

      SELECT id,name,value,description FROM table_name
第四个,即
PREPARE
,准备执行运行查询的
executestmt

您的问题中的整个查询序列的作用几乎与
SELECT*FROM table\u name
完全相同


您的第一个查询中有一个缺陷。您应该将
和TABLE_SCHEMA=DATABASE()
添加到其
WHERE
子句中。否则,您可以从多个数据库中名为
table\u name
的表中选择列。

“请解释我下面的内容”您的问题很广泛,您能澄清您想要什么吗?您是否阅读了手册中不理解的每一条语句?请澄清到底是什么让你困惑。问题中的上述陈述意味着,只需选择给定表的所有列,即可使用给定表中的所有列生成动态sql我还有一个问题。。我有一个有5列的源表。我需要为源代码创建映射表。当我们试图在mappng表的帮助下将源数据插入到另一个表中时,我们需要编写一个动态查询来将数据插入到另一个表中。有时,源表中的列增加到7。我们只需在映射表中进行更改,而不必在sql查询中进行更改。。查询应该动态地从源表中选取数据并将其加载到目标表。