Compartir tecnología

MySQL: ¿usar en o dónde después de unirse a la izquierda?

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

En MySQL,LEFT JOIN Se utiliza para devolver todos los registros de la tabla de la izquierda (es decir, la tabla a la izquierda de la palabra clave LEFT JOIN), incluso si no hay registros coincidentes en la tabla de la derecha. Para aquellos registros que no coinciden en la tabla derecha, la parte de la tabla derecha del conjunto de resultados se completará con NULL.acerca deONyWHEREEl uso de cláusulas, están enLEFT JOINLos roles en son diferentes:

  • EN Cláusula: se utiliza para definir condiciones de unión, es decir, determinar qué registros deben unirse.Cuando necesite combinar registros en función de la relación entre ciertos valores de campo en las tablas izquierda y derecha, se deben colocar estas condicionesON más tarde.si enONExisten restricciones condicionales adicionales en la tabla de la derecha más adelante, que también se aplicarán al conectarse, pero no afectarán el principio de devolver todos los registros de la tabla de la izquierda.
  • DÓNDE Cláusula: utilizada para pares que han pasadoJOIN El conjunto de resultados generado por la operación se filtra aún más.Cuando se pone la condiciónWHEREcláusula, aquellos registros que no cumplan con las condiciones (ya sea de la tabla de la izquierda o de la tabla de la derecha) se eliminarán, lo que puede afectar la intención original de devolver todos los registros de la tabla de la izquierda, especialmente cuando se trata de valores NULL, es necesario tenga mucho cuidado.

Caso específico uno:

Supongamos que tenemos dos tablas, una esemployees(mesa de empleados), la otra esdepartments(tabla de departamentos), queremos conocer todos los empleados y los nombres de sus departamentos, incluso si algunos empleados no están asignados a un departamento específico.

tabla de empleados:

identificaciónentificaciónnombre
1Alicia
2Beto
3Villancico

tabla de departamentos:

identificaciónentificaciónnombre
1HORA
2ÉL
3Marketing

en,employeesmesadepartment_idEl campo puede ser NULL, indicando que no hay ningún departamento asignado.

Ejemplo de uso de ON:

SELECT employees.name, departments.name AS department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;