contenido
Por cierto, revisa algunas conexiones.
Tema 2: Empleados que superan los ingresos de su jefe
Tema 3: Encuentra correos electrónicos duplicados
prefacio
- Las anteriores son algunas entradas básicas de mysql que debe conocer, pueden ayudar a los amigos que no están familiarizados con la sintaxis de sql a revisar rápidamente y comenzar con varias operaciones
- Esta serie es la práctica diaria de Xiaojie para mysql. Si cree que es útil para usted, preste atención a Xiaojie, practiquemos problemas de sql juntos y seamos expertos en varias operaciones de combinación de tablas de consulta --- sentar las bases para futuras entrevistas
Tema 1: fusionar dos tablas
- Requisitos del tema:
Escriba una consulta SQL para informar el apellido, el nombre, la ciudad y el estado de cada persona en la tabla Person. Si la dirección de personId no está en la tabla de direcciones, se notifica como nulo.
Devuelve la tabla de resultados en cualquier orden.
-
Análisis de tema: porque si la dirección de personId no existe en la tabla de direcciones, el informe es nulo pero la información de la tabla de personId aún debe generarse, por lo que es un método de unión externa:
select
FirstName, LastName, city, state
from
person p left outer join address a
on p.personid = a.personid
Por cierto, revisa algunas conexiones.
-
unión interna: ambos valores de la tabla existen en la unión interna
-
combinación externa: puede haber nulos en los valores de la tabla adjunta
Resumir:
- Una unión interna B: tomar la intersección
- A se une a la izquierda B: toma todo A, si B no tiene un valor correspondiente, es nulo
- Una unión derecha B: toma todo B, si A no tiene un valor correspondiente, es nulo
- Una B exterior completa: toma la unión, los valores que no se corresponden entre sí son nulos
Las condiciones del filtro se escriben después de on
Tema 2: Empleados que superan los ingresos de su jefe
181. Empleados que ganan más que sus jefes
- Requisitos del tema
Escriba una consulta SQL para encontrar empleados que ganen más que sus gerentes.
- Análisis del tema: Se requiere encontrar empleados cuyos ingresos sean superiores a los del gerente, este es un problema de autoconexión evidente, la información que necesitamos comparar está en la misma tabla, podemos entender esta relación como una autoconexión problema.
- Autoasociación: La autoasociación literalmente significa que uno mismo está conectado a uno mismo. En este momento, solo se usa una tabla para la unión. En este momento, podemos pensar en la autounión como dos tablas idénticas que se unen.
- Este problema suele ser dos información vinculada en la misma tabla. Los gerentes de empleados están todos en la tabla de empleados, obviamente problemas de autoconexión.
# 形式1
select
a.name as Employee
from
Employee a inner join Employee b
on a.managerid = b.id
where
a.salary > b.salary;
# 形式2
/*
select
a.name as Employee
from
Employee a inner join Employee b
on a.managerid = b.id && a.salary > b.salary;
*/
# 形式3
/*
select
a.name as Employee
from
Employee a, Employee b
where
a.managerid = b.id && a.salary > b.salary;
*/
Tema 3: Encuentra correos electrónicos duplicados
182. Encuentra correos electrónicos duplicados
- Requisito: encontrar todos los correos electrónicos duplicados en la tabla
- Idea: resulta ser un correo electrónico duplicado, lo que indica que el conteo se deduplicará después de agrupar por correo electrónico. Mantenemos el resultado de conteo (correo electrónico)> 1 como ans
select
email
from
person
group by
email
having
count(email) > 1;
Resumir
- El tema de hoy es principalmente revisar varios métodos de unión de tablas, cómo entender la unión de tablas usando la intersección de conjuntos para comprender, intersección de unión interna, unión de unión externa completa, unión externa izquierda externa derecha: toda la información sobre las tablas izquierda y derecha, sin escritura de asociación nulo
- Consulta de autounión de tabla, la misma tabla puede formar una autounión consigo misma para consultar
- También hay consultas agrupadas Tenga en cuenta un orden de precedencia: donde > agrupar por > tener > ordenar por