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

クエリ内の複合外部/主キーの列のテーブルを結合します

    NATURAL JOINがあります :

    SELECT *
    FROM   subscription
    NATURAL JOIN delivery;
    

    SELECTのマニュアルを引用

    テストのセットアップでは機能しますが、要求したことを厳密に実行しているわけではありません 。接続は、同じ名前を共有するすべての列に基づいています。外部キーは考慮されません。 NATURAL JOINの場合 良いアイデアはほとんどありません。

    コードを簡素化/冗長性を減らす

    手始めに、テーブルエイリアスを使用でき、ONを使用して結合条件を括弧で囲む必要はありません。 (USINGとは異なります ):

    SELECT *
    FROM   subscription s
    JOIN   delivery     d ON d.magazine_id = s.magazine_id
                         AND d.user_id = s.user_id;
    

    結合条件の列名は同じであるため、USINGを使用してさらに簡略化できます。 :

    SELECT *
    FROM   subscription s
    JOIN   delivery     d USING (magazine_id, user_id);
    

    外部キー制約に基づいて自動的に結合を行う構文バリアントはありません。システムカタログにクエリを実行し、SQLを動的に構築する必要があります。



    1. 検索語が見つからない場合、SQLクエリは非常に長い間実行され続けます

    2. PostgreSql、スキーマオブジェクトDDLを抽出してSQLファイルを分離します

    3. MySQLテーブルデータをデータソースとして使用してGoogleグラフを生成できません

    4. MySQLデータベースへのMSSQLServerクレデンシャルの保存