MySQL从SELECT创建临时表保持原始字段长度

时间:2014-11-10 19:03:45

标签: mysql select temporary-objects

考虑这个简单的例子:

INSERT INTO TemporaryTable
SELECT RealTable.name as name
FROM RealTable
LIMIT 1

我正在从SELECT创建一个临时表。

问题:临时表的字段大小设置为SELECT结果集的每个字段的最大长度。 例如,如果结果集包含如下内容:name =" John Doe"," name"临时表中的字段将为VARCHAR(8),因为" John Doe"即使RealTable.name是varchar(255)

,它也是8

我希望TempoarayTable.name的长度与真实表中的名称相同。有没有办法自动完成?谢谢。

2 个答案:

答案 0 :(得分:1)

做一个

CREATE TEMPORARY TABLE tempTable
LIKE oldTable;

INSERT INTO tempTable
SELECT ... FROM ...

答案 1 :(得分:1)

  

有没有办法自动完成?

NO。您必须根据目标表模式手动定义临时表,然后像

一样插入它
create temporary table temp_test(name varchar(255));


INSERT INTO temp_test
SELECT RealTable.name as name
FROM RealTable
LIMIT 1;