sql >> Base de Datos >  >> RDS >> Mysql

Comprender la unión natural en SQL

Esto es demasiado largo para un comentario. No utilice uniones naturales. No se moleste en aprender uniones naturales. Son una abominación.

¿Por qué? Las condiciones de unión se basan en columnas con los mismos nombres . Las uniones naturales ni siquiera tienen en cuenta las relaciones de clave externa declaradas. Esto puede ser bastante peligroso. O, en mi caso, porque casi todas mis tablas tienen CreatedAt y CreatedBy , son inútiles de todos modos.

En su lugar, enumere el join llaves. En tu caso (porque tienes select * ), el using cláusula es la más apropiada:

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

Esto también tiene la ventaja de que las claves se muestran explícitamente en la consulta, lo que reduce en gran medida el margen de error.