Mysql
 sql >> Database >  >> RDS >> Mysql

Comprendere il join naturale in SQL

Questo è troppo lungo per un commento. Non utilizzare join naturali. Non preoccuparti di imparare i join naturali. Sono un abominio.

Come mai? Le condizioni di unione si basano su colonne con gli stessi nomi . I natural join non tengono nemmeno conto delle relazioni di chiave esterna dichiarate. Questo può essere abbastanza pericoloso. Oppure, nel mio caso, perché quasi tutte le mie tabelle hanno CreatedAt e CreatedBy , sono comunque inutili.

Invece, elenca il join chiavi. Nel tuo caso (perché hai select * ), il using la clausola è la più appropriata:

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

Questo ha anche il vantaggio che le chiavi sono mostrate in modo esplicito nella query, il che riduce notevolmente la possibilità di errori.