2016-07-09 8 views
0

Ich habe zwei Tabellen: A (525.968 Datensätze) und B (517.831 Datensätze). Ich möchte eine Tabelle mit allen Zeilen von A und den übereinstimmenden Datensätzen von B generieren. Beide Tabellen haben die Spalte "id" und die Spalte "year". Die Kombination von id und Jahr in Tabelle A ist einzigartig, aber nicht in der Tabelle B. Also schrieb ich die folgende Abfrage:LEFT JOIN gibt ein falsches Ergebnis in PostgreSQL zurück

SELECT 
A.id, 
A.year, 
A.v1, 
B.x1, 
B.e1 
FROM 
A 
LEFT JOIN B ON (A.id = B.id AND A.year = B.year); 

ich das Ergebnis dachte soll die gleiche Gesamtzahl der Datensätze in A enthält, sondern nur gibt ungefähr 517.950 Datensätze zurück. Ich frage mich, was die mögliche Ursache sein könnte.

Danke!

+1

Die Abfrage sollte alle Datensätze der Tabelle 'A' zurückzukehren. Ist das die ganze Abfrage, oder gibt es auch eine 'WHERE'-Klausel? –

Antwort

0

Zunächst verstehe ich, dass dies ein Beispiel ist, aber postgres kann ein Problem mit Großbuchstaben in den Tabellennamen haben.

Zweitens kann es eine gute Idee sein, zu überprüfen, wie genau Sie 525,968 Datensätze berechnet haben. Die Sache ist - wenn Sie einen Client der Datenbankverwaltung/-abfrage verwenden, kann es Ihnen verschiedene/technische Informationen über Tabellen zeigen (in Postgres gibt es möglicherweise interne Zeilenzähler, die sich tatsächlich von der Anzahl der Datensätze unterscheiden können).

Und schließlich zu prüfen, selbst etwas tun wie

SELECT 
count("A".id) 
FROM 
"A" 
Verwandte Themen