UNION
gør simpelthen ikke det du beskriver. Denne forespørgsel skal:
CREATE TABLE AS
SELECT date, location_code, product_code, quantity
FROM transactions_kitchen k
UNION ALL
SELECT h.date, h.location_code, h.product_code, h.quantity
FROM transactions_admin h
LEFT JOIN transactions_kitchen k USING (location_code, date)
WHERE k.location_code IS NULL;
LEFT JOIN
/ IS NULL
at ekskludere rækker fra den anden tabel for den samme placering og dato. Se:
- Vælg rækker, der ikke er til stede i en anden tabel
Brug CREATE TABLE AS
i stedet for SELECT INTO
. Manualen:
CREATE TABLE AS
er funktionelt magen til SELECT INTO
. CREATE TABLE AS
er den anbefalede syntaks, da denne form for SELECT INTO
er ikke tilgængelig i ECPG eller PL/pgSQL, fordi de fortolkerINTO
klausul anderledes. Desuden CREATE TABLE AS
tilbyder en oversættelse af funktionaliteten leveret af SELECT INTO
.
Eller, hvis måltabellen allerede eksisterer:
INSERT INTO transactions_combined (<list names of target column here!>)
SELECT ...
Bortset fra:Jeg ville ikke bruge date
som kolonnenavn. Det er et reserveret ord i enhver SQL-standard og et funktions- og datatypenavn i Postgres.