UNION
単にあなたが説明することをしません。このクエリは次のようになります:
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
同じ場所と日付の2番目のテーブルから行を除外します。参照:
- 他のテーブルに存在しない行を選択します
CREATE TABLE AS
を使用します SELECT INTO
の代わりに 。マニュアル:
CREATE TABLE AS
機能的にはSELECT INTO
に似ています 。CREATE TABLE AS
この形式のSELECT INTO
は、推奨される構文です。INTO
を解釈するため、ECPGまたはPL/pgSQLでは使用できません。 別の節。さらに、CREATE TABLE AS
SELECT INTO
によって提供される機能のスーパーセットを提供します 。
または、ターゲットテーブルがすでに存在する場合:
INSERT INTO transactions_combined (<list names of target column here!>)
SELECT ...
余談ですが、date
は使用しません 列名として。これは、すべてのSQL標準で予約語であり、Postgresでは関数とデータ型の名前です。