Ответ 1
select top 0 *
into #mytemptable
from myrealtable
Мне нужно создать таблицу temp с одинаковыми столбцами и напечатать как постоянную таблицу. Каков наилучший способ сделать это? (Постоянная таблица имеет более 100 столбцов)
т
Обычно я создаю таблицу следующим образом.
DECLARE #TT TABLE(
member_id INT,
reason varchar(1),
record_status varchar(1) ,
record_type varchar(1)
)
Но есть ли способ сделать это без упоминания имен и типов столбцов, но укажите имя другой таблицы с необходимыми столбцами?
select top 0 *
into #mytemptable
from myrealtable
Сортировка...
select top 0 * into #temptable from mytable
Примечание. Это создает пустую копию temp, но не создает первичный ключ
Это ответ на конкретный MySQL, не уверенный, где еще он работает -
Вы можете создать пустую таблицу с одинаковыми определениями столбцов с помощью:
CREATE TEMPORARY TABLE temp_foo LIKE foo;
И вы можете создать заполненную копию существующей таблицы с помощью:
CREATE TEMPORARY TABLE temp_foo SELECT * FROM foo;
И следующие работы в postgres; к сожалению, разные РСУБД здесь не кажутся очень последовательными:
CREATE TEMPORARY TABLE temp_foo AS SELECT * FROM foo;
Я понимаю, что этот вопрос очень старый, но для тех, кто ищет решение, специфичное для PostgreSQL, это:
CREATE TEMP TABLE tmp_table AS SELECT * FROM original_table LIMIT 0;
Обратите внимание: таблица temp будет помещена в схему типа pg_temp_3.
Это создаст временную таблицу, в которой будут все столбцы (без индексов) и без данных, однако в зависимости от ваших потребностей вы можете удалить первичный ключ:
ALTER TABLE pg_temp_3.tmp_table DROP COLUMN primary_key;
Если исходная таблица не содержит никаких данных в ней, вы можете оставить "LIMIT 0".
select * into #temptable from tablename where 1<>1