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

1つが主キーを持たず、同じ文字長ではない2つのテーブルを結合する方法

    これを試して、最初の8文字のみを比較してください:

    SELECT r.domainid, r.dombegin, r.domend, d.ddid 
    FROM   domainregion r
    JOIN   dyndomrun d ON r.domainid::varchar(8) = d.ddid 
    ORDER  BY r.domainid, d.ddid, r.dombegin, r.domend;
    

    キャストは、末尾の文字を暗黙的にトリミングします。 ddid そもそも8文字しかない。処理する必要もありません。これは同じことを達成します:

    JOIN   dyndomrun d ON left(r.domainid, 8) = d.ddid 
    

    ただし、文字列関数left() PostgreSQL9.1でのみ導入されました。以前のバージョンでは、次のように置き換えることができます:

    JOIN   dyndomrun d ON substr(r.domainid, 1, 8) = d.ddid
    

    __

    初心者向けの基本的な説明:

    • クエリはJOINを使用します 。 詳細についてはマニュアルをご覧ください

    • FROM domainregion r FROM domainregion AS rの略です。 。 AS この場合、PostgreSQLでは単なるノイズです。 テーブルエイリアス クエリが短くて読みやすくなりますが、ここでは他の影響はありません。たとえば、テーブルエイリアスを使用して、同じテーブルを複数回含めることもできます。

    • 結合条件ON r.domainid::varchar(8) = d.ddid 2つの式が完全に一致する行のみを結合します。繰り返しになりますが、これらのマニュアルの基本 (またはその他のソース)。

    これは単純なクエリであり、ここで説明することはあまりありません。




    1. AndroidアプリはどのようにしてMySQLにアクセスできますか?

    2. Spring JPA(Hibernate)Entity Managerを使用して接続が接続プールに返されるのはいつですか?

    3. Oracle PL /SQLUTL_FILE.PUTバッファリング

    4. IDをnullにすることはできません(自動インクリメント)