请解释这些sql语句

ntjbwcob  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(373)

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

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;
uemypmqf

uemypmqf1#

这种模式是基于特定表中列的名称创建动态(用mysql术语编写)查询。 INFORMATION_SCHEMA 是一个内置的数据库,其中的只读表描述mysql服务器上所有数据库中的所有表。
序列中的第一个查询检索局部变量中的文本字符串 @COLUMNS 具有如下值

id,name,value,description

对于名为 table_name 用那四列。
第三个检索局部变量中的字符串 @s 一个包含如下查询的值

SELECT id,name,value,description FROM table_name

第四个, PREPARE ,准备好了吗 EXECUTE stmt ,它运行查询。你可以阅读 PREPARE 以及 EXECUTE 在这里。
在你的问题中,整个查询序列的作用几乎与 SELECT * FROM table_name .
您的第一个查询中有一个缺陷。你应该加上 AND TABLE_SCHEMA = DATABASE() 到它的 WHERE 条款。否则,可以从名为 table_name 在多个数据库中。

相关问题