Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So entfernen Sie doppelte Spalten aus dem Join in SQL

Da Sie die Tabelle mit '*' abfragen, erhalten Sie immer alle Spalten in beiden Tabellen. Um diese Spalte auszulassen, müssen Sie alle Spalten, die Sie abfragen möchten, manuell benennen. Um Ihren anderen Bedarf zu decken, müssen Sie einfach eine Dummy-Spalte in jede Klausel in der Union-Abfrage einfügen. Unten ist ein Beispiel, das funktionieren sollte, um das zu ermöglichen, was Sie wollen -

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;