考虑这个简单的例子:
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的长度与真实表中的名称相同。有没有办法自动完成?谢谢。
答案 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;