2015-08-04 2 views
0

У меня есть ограничение на создание таблиц на db, на которых я хочу запустить запрос. Система БД PostgresСоздание таблицы без создания таблицы

я могу сделать следующее:

testdb=# select 'john' as first, 'doe' as last;           
first | last 
-------+------ 
john | doe 

но то, что я хочу, чтобы быть в состоянии сделать это:

first | last 
-------+------ 
john | doe 
jane | doe 

Таким образом, я могу производить первый ряд, но не последующий ряд

В качестве альтернативы можно ли удалить временную таблицу, если потеряна моя сессия с базой данных?

Приветствия

Адам

+0

Временные таблицы автоматически удаляются по окончании сеанса http://www.postgresql.org/docs/current/interactive /sql-createtable.html#AEN67422 – jbrahy

+0

эта система комментариев ужасна –

ответ

1

Самый короткий (самый компактный) форма представляет собой ряд конструктор:

select * 
from ( 
    values 
     ('John', 'Doe'), 
     ('Jane', 'Doe'), 
     ('Arthur', 'Dent') 
) as t (first, last) 
+0

Это именно то, что я хочу. –

1

Это то, что вы ищете?

WITH testdb(first,last) AS (VALUES ('john','doe'), ('jane', 'doe')) 
SELECT * FROM testdb; 

SQL Fiddle Demo

С обеспечивает способ записи вспомогательных утверждений для использования в большем запросе. Эти утверждения, которые часто называются Common Table Выражения или CTE, можно рассматривать как определение временных таблиц , которые существуют только для одного запроса. Каждый вспомогательный оператор в условии WITH может быть SELECT, INSERT, UPDATE или DELETE; и оператор WITH сам привязан к основному оператору, который также может быть SELECT, INSERT, UPDATE или DELETE.

Смежные вопросы