2017-09-29 2 views
-6

Könnten Sie mir bitte sagen, ob die folgende akzeptabel in SQL sprachInner Verwendungsproblem in SQL JOIN

Kann ich eine Join-Anweisung schreiben unter der Bedingung JOIN 2 Tabellen, wenn die Bedingung der Gleichheit von zwei Attributen ist mit verschiedene Namen. Zum Beispiel ist es gültig

FROM A join B ON A.c = B.d 

Wenn die A. C und b.d Attribute enthalten Werte des gleichen Typs und sind logisch die gleichen Dinge zu schreiben. Vielen Dank im Voraus.

+2

Sicher. Hättest du es nicht einfach versucht und deine Antwort bekommen? In zukünftigen SQL-Fragen sollten Sie Ihre [RDBMS (MySQL, Oracle, SQL Server, usw.)] (https://en.wikipedia.org/wiki/Relational_database_management_system) markieren. – Santi

+1

Ja - Willkommen bei SQL! –

Antwort

1

Ja, das ist Standard-SQL. Dies ist eine Antwort, um die gültigen Formen von Inner join Operationen in SQL zusammen mit dem, was im Allgemeinen benachteiligt ist und warum.

Die ersten sind die alten Stil "implizite Cross Join und Filter" -Ansatz. Auf diese Weise würden Sie schreiben:

SELECT * 
    FROM a, b 
WHERE a.c=b.c 

Diese Regel benachteiligt wird, weil die Join-Bedingung zu trennen und die Verbindung selbst macht es schwieriger, die Abfrage zu beheben, schwieriger zu lesen, und deshalb schwieriger zu pflegen. Die nächsten zwei gleichwertigen Ansätze sind das, was Sie verwenden:

SELECT * 
     FROM a 
INNER JOIN b ON a.c = b.c 

nun ein weiteren Ansatz gibt es hier, die auch funktioniert (aber laufen in Probleme in einigen:

SELECT * 
    FROM a 
    JOIN b ON a.c = b.c 

Sie auch INNER JOIN statt JOIN verwenden können Fälle), das ist das, da Sie die gleiche Abfrage verwenden Sie die using Schlüsselwort verwenden können:

Schließlich gibt
SELECT * 
    FROM a 
    JOIN b USING (c); 

ist die natürliche verbinden, dass c unter der Annahme, die die gleichen wie USING außer, dass sie alle Spalten mit dem gleichen Namen nehmen:

 SELECT * 
     FROM a 
NATURAL JOIN b; 

wir ON Normalerweise verwenden, weil es von den Join-Bedingungen in dem gleichen Teil eindeutig und legt ist die Abfrage als Join selbst, was die Wartung erleichtert.

+0

Vielen Dank. Es half. – Windy