2017-12-16 4 views
-1

Ich habe 2 Tabellen, primäre und sekundäre, mit den gleichen Spalten. Sie teilen sich eine Referenznummer mit einigen doppelten Einträgen und einige für beide. Ich versuche, von ihnen in der Weise, wie alles aus der primären wählen, wo ref ist doppelt, dann wählen Sie alle verbleibenden aus beiden abzufragen.INNER JOIN zu SELECT Anweisung

Dies ist, was ich versucht habe:

SELECT * FROM primary as p 
INNER JOIN 
(SELECT * FROM primary WHERE ref NOT IN (SELECT ref from secondary) as s) 
ON p.ref = s.ref 

ich einen Syntaxfehler erhalten, die bis zum letzten „ON P.REF = s.ref“ Teil verwandt zu sein scheint. Was mache ich falsch?

Antwort

0

Nicht sicher, der Code tatsächlich tut, was Sie versuchen zu erreichen, aber der Syntaxfehler ist mit der letzten schließenden Klammer verbunden. Versuchen Sie dies:

SELECT * FROM primary as p 
INNER JOIN 
(SELECT * FROM primary WHERE ref NOT IN (SELECT ref from secondary)) as s 
ON p.ref = s.ref 
+0

Diese Abfrage lieferte ein Ergebnis, aber nicht das, was ich wollte. Es war jedoch hilfreich, da ich den Syntaxfehler umgehen konnte, um dann festzustellen, dass ich mit INNER JOIN auf dem falschen Weg war, dass ich stattdessen UNION verwenden sollte. Ich habe meine Frage hier beantwortet. Vielen Dank! –

0

Ich war mit INNER JOIN auf der falschen Spur. Die Verwendung von UNION erlaubte mir, das gesuchte Ergebnis zu erhalten.

SELECT * FROM primary 
UNION 
(SELECT * FROM secondary WHERE ref NOT IN (SELECT ref from primary))