2017-05-08 3 views
0

Hier habe ich zwei Tabelle Kunde und Auftrag. Schema der beiden Tabelle ist Orders = {OrderID, CustomerID, Preis} Kunden = {CustomerID, Name, Adresse}Unterschied zwischen beitreten

Nun, wenn ich

SELECT Orders.OrderID, Customers.Name 
FROM Orders 
INNER JOIN Customers 
    ON Orders.CustomerID=Customers.CustomerID;` 

oder

Select Orders.OrderID, Customers.Name 
from Orders,Customers 
where Orders.CustomerID = Customers.CustomerID` 

beide laufen produziert gleiches Ergebnis. Was unterscheidet dann beim Schreiben auf verschiedene Arten? Ich bin verwirrt darüber. Wird die zweite Abfrage mit innerem Join aufgerufen?

+1

Die zweite Syntax ist, was als implizite Join bekannt ist. Sie möchten es im Allgemeinen vermeiden und bevorzugen die erste Syntax. http://stackoverflow.com/questions/44917/explicit-vs-implicit-sql-joins – CSharper

+0

Zweite ist die älteste und veraltete Syntaxis –

+0

Es ist ein Unterschied in den Standards der erste ist ANSI 92 konform der andere ist der Standard vor 1992 Beide sind vollkommen gültig; obwohl INNER JOIN Syntax ist die modernere. Die meisten aktuellen Cost Based Optimizer werden sie in Bezug auf die Ausführung gleich behandeln. es gibt leichte Abweichungen, wenn die Komplexität zunimmt. – xQbert

Antwort

0

Das Folgende ist der moderne Standard Ausdruck von INNER JOIN. Dies ist der empfohlene Weg. Verwenden Sie immer explizite JOIN-Syntax.

select Orders.OrderID, 
    Customers.name 
from Orders 
inner join Customers on Orders.CustomerID = Customers.CustomerID 

Dies ist eine alte Komma basierte Join. Verwenden Sie nicht diese.

select Orders.OrderID, 
    Customers.name 
from Orders, 
    Customers 
where Orders.CustomerID = Customers.CustomerID 
+0

Ich denke, Sie sollten besser stimmen, um diese Frage als Duplikat zu schließen. – trincot