Ich habe 2 Tische. Die CustomerDetails-Tabelle enthält die Spalten ID, UUID, Name, Alter. Die FavoriteCustomers-Tabelle enthält die Spalten-ID UUID

Die CustomerDetails-Tabelle enthält viele Einträge, z. B. 10000 Zeilen. während FavoriteCustomers Table nur sehr wenige Einträge enthält. In der CustomerDetails-Tabelle bilden ID und UUID die kombinierte eindeutige ID.

Jetzt möchte ich, dass das Ergebnis Zeilenspalten wie unten mit einer where-Klausel kombiniert.

ID, UUID, Name, Alter, isFavorite WHERE Alter ist> 30

-2
Karthick Ramesh 6 Okt. 2020 im 20:48

2 Antworten

Beste Antwort

In DBMS, die einen booleschen Typ unterstützen, können Sie eine EXISTS -Klausel oder eine IN -Klausel verwenden.

select
  id, uuid, name, age,
  (id, uuid) in (select id, uuid from favoritecustomers) as is_favorite
from customerdetails
where age > 30;
0
Thorsten Kettner 6 Okt. 2020 im 18:11

Sie können entweder eine Unterabfrage oder, wie im folgenden Beispiel, eine LEFT JOIN verwenden und beim Join nach einem NULL -Wert suchen.

select cd.ID, cd. UUID, cd.Name, cd.Age, 
   case when fc.ID is null then 'N' else 'Y' end as isFavorite
from CustomerDetails cd
left join FavoriteCustomers fc
on fc.ID = cd.ID
where cd.Age > 30;
1
gmiley 6 Okt. 2020 im 17:53