sql >> データベース >  >> RDS >> PostgreSQL

2つのテーブルを新しいテーブルに結合して、他のテーブルから選択した行が無視されるようにします

    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では関数とデータ型の名前です。



    1. SQLServerの「intをデータ型numericに変換する算術オーバーフローエラー」を修正しました

    2. mySQLはvarcharを日付に変換します

    3. ChamiloLMSMySQLデータベースをバックアップする方法

    4. インクリメンタルデータのマスキングとマッピング:変更の検出と更新…