Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Natural Join in SQL verstehen

Das ist zu lang für einen Kommentar. Verwenden Sie keine natürlichen Joins. Kümmern Sie sich nicht darum, natürliche Joins zu lernen. Sie sind ein Greuel.

Wieso den? Die Join-Bedingungen basieren auf Spalten mit denselben Namen . Natürliche Joins berücksichtigen nicht einmal deklarierte Fremdschlüsselbeziehungen. Das kann ziemlich gefährlich werden. Oder – in meinem Fall – weil fast alle meine Tabellen CreatedAt haben und CreatedBy , sie sind sowieso nutzlos.

Listen Sie stattdessen join auf Schlüssel. In Ihrem Fall (weil Sie select * ), die using Klausel ist am besten geeignet:

SELECT * 
FROM R JOIN
     S
     USING (A, B);

Dies hat auch den Vorteil, dass die Schlüssel explizit in der Abfrage angezeigt werden, was die Fehleranfälligkeit stark reduziert.