7
假设我有以下表一列:创建另一个表中的行值派生列名的表
TABLE_1
-----------
| nameCol |
-----------
| A |
| A |
| B |
| C |
-----------
我想创建一个新的表具有以下列名称:
TABLE_2
| pk | A | B | C |
也就是说,从一个t时的数据能成为第二张表的列名。 在某个层面可能有一个关键点,但我无法真正得到答案。
我想:
create table Table_2 (
select group_concat(distinct(nameCol), " varchar(50), ")
from Table_1
);
非常感谢您的回复。我试过上面的查询。但是,我的@sql变量中的查询字符串非常长(因为列数很多)。这在“PREPARE stmt”行中造成问题。它似乎将一个点以外的查询字符串的大部分删除,而不完整的字符串会导致语法错误。 – 2013-04-04 20:56:01
@AlptiginJalayr我认为问题出在GROUP_CONCAT函数上,它的最大长度是有限的,但是你可以使用例如'SET SESSION group_concat_max_len = 1000000;' – fthiella 2013-04-04 21:05:58
来增加这个限制。但是,这不是错误的group_concat,而是PREPARE语句从[sql]查询开始。我知道这是因为我在PREPARE之前执行了SELECT [at] sql,并且它返回了完整的查询。 – 2013-04-05 14:24:29