Prawdopodobnie chcesz CREATE TABLE AS
- działa również dla TEMPORARY
(TEMP
) tabele:
CREATE TEMP TABLE temp1 AS
SELECT dataid
, register_type
, timestamp_localtime
, read_value_avg
FROM rawdata.egauge
WHERE register_type LIKE '%gen%'
ORDER BY dataid, timestamp_localtime;
Tworzy to tymczasową tabelę i kopiuje do niej dane. statyczna migawka danych, pamiętaj. Jest jak zwykła tabela, ale znajduje się w pamięci RAM, jeśli temp_buffers
jest ustawiony wystarczająco wysoko. Jest widoczny tylko w ramach bieżącej sesji i umiera na końcu. Po utworzeniu za pomocą ON COMMIT DROP
umiera pod koniec transakcji .
Tabele tymczasowe są na pierwszym miejscu w domyślnej ścieżce wyszukiwania schematu , ukrywając inne widoczne tabele o tej samej nazwie, chyba że zakwalifikowano je do schematu:
- W jaki sposób search_path wpływa na rozpoznawanie identyfikatora i „bieżący schemat”
Jeśli chcesz dynamicznego , szukasz CREATE VIEW
- zupełnie inna historia.
Standard SQL również definiuje, a Postgres obsługuje również: . Ale odradza się jego stosowanie:SELECT INTO
Najlepiej użyć CREATE TABLE AS
w tym celu w nowym kodzie.
Naprawdę nie ma potrzeby stosowania drugiego wariantu składni i SELECT INTO
jest używany do przypisywania w plpgsql
, gdzie składnia SQL jest w konsekwencji niemożliwa.
Powiązane:
- Połącz dwie tabele w nową, aby zignorować wybrane wiersze z drugiej
- BŁĄD:parametry wejściowe po jednym z wartością domyślną muszą również mieć wartości domyślne w Postgresie
CREATE TABLE LIKE (...)
kopiuje tylko strukturę z innej tabeli i brak danych:
LIKE
klauzula określa tabelę, z której nowa tabela automatycznie kopiuje wszystkie nazwy kolumn, ich typy danych i ograniczenia niepuste.
Jeśli potrzebujesz tabeli „tymczasowej” tylko na potrzeby pojedynczego zapytania (a następnie ją odrzuć), „tabela pochodna” w CTE lub podzapytaniu wiąże się ze znacznie mniejszym obciążeniem:
- Ręcznie zmienić plan wykonania zapytania w postgresql?
- Połącz dwa zapytania SELECT w PostgreSQL
- Ponownie użyj obliczonej wartości wyboru
- Wiele CTE w jednym zapytaniu
- Aktualizuj z wynikami innego sql