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

SQLの結合から重複する列を削除する方法

    '*'を使用してテーブルをクエリしているため、常に両方のテーブルのすべての列を取得します。この列を省略するには、クエリするすべての列に手動で名前を付ける必要があります。他のニーズに対応するには、ユニオンクエリの各句にダミー列を挿入するだけです。以下は、あなたが望むものを可能にするために働くはずの例です-

    SELECT customer.customerid, customer.customername, customer.customeraddress, newspapername, magazinename, enddate, publishedby 
    FROM customer
    INNER JOIN
    (select  customerid, newspapername, null Magazinename, enddate, n.publishedby 
     from newspapersubscription ns, newspaper n 
     where publishedby in(select publishedby 
                        from newspaper 
                        where ns.newspapername = n.NewspaperName)
    UNION
    select  customerid, null newspapername, Magazinename, enddate, m.publishedby 
    from magazinesubscription ms, magazine m 
     where publishedby in(select publishedby 
                        from magazine 
                         where ms.Magazinename = m.MagazineName))
    on customer.customerid = customerid
    ORDER BY customer.customerid;
    


    1. アクアデータスタジオ

    2. OracleのLikeとContains()の検索基準の違い

    3. postgresの行をマージし、nullでない場合は値を最新のものに置き換えます

    4. SQL Serverトリガー:理解と代替案