Ich versuche, SQL in Microsoft Server zu verfolgen. Ich bin auf einen Join gestoßen, der eine mir unbekannte Konvention verwendet. Was bedeutet "=*
"?
WHERE table1.yr =* table2.yr -1
Diese:
WHERE t.column =* s.column
... ist eine alte TSQL-Syntax (vor SQL Server 2005) und ist kein ANSI-JOIN.
Referenz: SQL Server 2005-Outer Join-Gotcha
Ich glaube, das ist eine alte Syntax, die auf eine äußere Join-Bedingung von Tabelle1 zu Tabelle2 hinweist
Alter Stil:
SELECT * FROM table1, table2
WHERE table1.yr =* table2.yr -1
Neuer Stil (SQL92):
SELECT * FROM table2
LEFT OUTER JOIN table1 ON table1.yr = table2.yr - 1
Dies ist die alte Syntax zum Ausdrücken von Joins
Das bedeutet, dass der Code sofort ersetzt werden muss! Dieser Stil-Join soll ein richtiger Join sein. Leider wird es manchmal als Kreuzverknüpfung interpretiert, sodass die Ergebnisse der Verwendung dieser Verknüpfung möglicherweise nicht korrekt sind. Diese Syntax ist ebenfalls veraltet und kann nicht in der nächsten Version des SQL-Servers verwendet werden.
Dies ist die ANSI SQL 1989-Syntax für RIGHT OUTER JOIN, wobei * = der LEFT OUTER JOIN wäre.
Beachten Sie auch, dass das Einfügen der Join-Syntax in die WHERE-Klausel in SQL 2008 veraltet ist. http://scarydba.wordpress.com/2009/09/15/no-join-predicate/ <== A time Artikel dazu.
Dies ist der alte Stil von Joins, die in ANSI SQL92 nicht mehr unterstützt wurden. Die neue Syntax verwendet INNER und OUTER JOIN, die Tabellen auf der Grundlage von Ausdrücken anstelle von Gleichheit verknüpfen
EIN ??? Die äußere Verknüpfung wird mit dem Symbol = * anstelle von = in der WHERE-Klausel angegeben.
SELECT *
FROM table1, table2
WHERE table1.yr =* table2.yr -1
Bedeutet dasselbe wie dieses:
SELECT *
FROM
table2
LEFT OUTER JOIN
table1
ON table1.yr = (table2.yr - 1)
Die * -Syntax gilt als veraltet und entspricht nicht den ANSI-Standards.
Oracle hat ein ähnliches Konstrukt wie dieses:
WHERE table1.yr (+)= table2.yr
yeap, es ist eine andere Syntax für einen Left Outer Join
aus table1 linker äußerer Join table2 auf table1.yr = table2.yr - 1
Einfach und einfach. Dies ist ein SQL-92-Outer-Join-Operator ( weitere Informationen ).
Verwenden Sie es nicht, es ist eine sehr alte Schule, aber es ähnelt LEFT JOIN und RIGHT JOIN. Sie müssen nur sagen, welche Seite des Joins die "Parent" -Seite ist, also Reihen auf dieser Seite zuerst betrachtet werden.
Wenn Sie versuchen, dies in SQL 2005 auszuführen, wird ein Fehler ausgegeben, der besagt, dass Sie dies im Kompatibilitätsmodus ausführen müssen.