existieren Angenommen, dass wir einen Tisch Users
haben, die über BenutzerSQL erhalten Daten aus der Tabelle nur, wenn sie nicht in einer anderen Tabelle
UserId FirstName LastName
1 Maria Anders
2 Ana Trujillo
3 Antonio Moreno
4 Thomas Hardy
5 Christina Berglund
6 Hanna Moos
7 Frédérique Citeaux
8 Martín Sommer
haben wir zwei Tabellen Details
und Exception
grundlegende Informationen speichern, die zusätzlichen Details speichern über Benutzer, tatsächlich haben beide Tabellen die gleiche Struktur
Details
Tisch
UserId Age
1 10
2 10
3 10
4 40
5 50
6 60
7 70
8 80
Excpetions
Tisch
UserId Age
1 100
2 100
3 100
ich Abfrage schreiben möchten alle Details über die Benutzer von Exceptions
und details
zu erhalten, wenn der Benutzer Informationen in der exceptions
Tabelle gespeichert hat es sonst in details
Tabelle gespeicherten Daten überschreiben, sollten die Daten aus details
erhalten Tisch, so sollte das Ergebnis
UserId FirstName LastName Age
1 Maria Anders 100
2 Ana Trujillo 100
3 Antonio Moreno 100
4 Thomas Hardy 40
5 Christina Berglund 50
6 Hanna Moos 60
7 Frédérique Citeaux 70
8 Martín Sommer 80
sein, so in diesem Beispiel Maria, Ana und Antonio mit Ids 1, 2, 3 haben im Alter von 10 in der Tabelle details
aber becuase ihre gespeicherten Daten inIn der Tabelle sollte das Ergebnis das Alter 100 anzeigen, für andere Benutzer die keine Informationen in der excpetion
Tabelle haben, also bekommen wir einfach die Daten aus der Tabelle details
.
tatsächlich kam ich mit einer Lösung, aber ich denke, es gibt bessere Abfrage ich schreiben kann, hier meine Lösung
select u.UserId, u.FirstName , u.LastName , e.Age from Exceptions e
inner join Users u on u.UserId = e.UserId
union select u.UserId, u.FirstName , u.LastName , d.Age from Details d
inner join Users u on u.UserId = d.UserId
where d.UserId not in (select UserId from Exceptions)
eine Möglichkeit, diese Unterabfrage zu vermeiden, ist es? können wir es besser machen?
gerade eingefügt die genaue Abfrage. aber du bist schneller! – Badiparmagi
@Badiparmagi dann bist du gut in sql .. könntest du die antwort verbessern und dann posten .. (mit isnull .. oder anderen ..) – scaisEdge
danke. vielleicht können Sie einen Alias wie "age" hinzufügen, wenn Sie "no column name" benennen. Gut gemacht. – Badiparmagi