Ich muss nur die erste Zeile aus einer Abfrage auswählen, die Tabellen A und B verbindet. In Tabelle B existieren mehrere Datensätze mit demselben Namen. In keiner der beiden Tabellen sind Identifikatoren vorhanden. Ich kann das Schema auch nicht ändern, weil ich die DB nicht besitze.Wählen Sie die erste Zeile in einem Join von zwei Tabellen in einer Anweisung
TABLE A
NAME
TABLE B
NAME
DATA1
DATA2
Select Distinct A.NAME,B.DATA1,B.DATA2
From A
Inner Join B on A.NAME = B.NAME
Das gibt mir
NAME DATA1 DATA2
sameName 1 2
sameName 1 3
otherName 5 7
otherName 8 9
aber ich brauche nur eine Zeile pro Namen abzurufen
NAME DATA1 DATA2
sameName 1 2
otherName 5 7
Ich konnte dies tun, indem das Ergebnis in eine temporäre Tabelle mit einem Zusatz Identitätsspalte und wählen Sie dann die Mindest-ID pro Name.
Das Problem hier ist, dass ich dies in einer einzigen Anweisung tun muss.
Es gibt einen kleinen Tippfehler bei der letzten Aussage. Es sollte "IS NOT NULL" anstelle von "IN NOT NULL" sein. – mbp
+1 du bist ein Retter. Ihr bearbeiteter Self-Join funktioniert sogar mit SQL CE, wo andere Lösungen für diese Frage aufgrund der Einschränkungen von SQL CE nicht verfügbar sind. –