contenu
Sujet 1 : Fusionner deux tables
Au fait, passez en revue quelques connexions
Sujet 2 : Employés qui dépassent le revenu de leur gestionnaire
Sujet 3 : Rechercher les e-mails en double
avant-propos
- Ce qui précède est une entrée mysql de base que vous devez connaître, peut aider des amis qui ne sont pas familiers avec la syntaxe sql à réviser rapidement et à démarrer avec diverses opérations
- Cette série est la pratique quotidienne de Xiaojie pour mysql. Si vous pensez que cela vous est utile, faites attention à Xiaojie, laissez-nous pratiquer les problèmes sql ensemble et devenez compétent dans diverses opérations de fusion de tables de requête --- jetez les bases pour de futures interviews
Sujet 1 : Fusionner deux tables
- Exigences du sujet :
Écrivez une requête SQL pour rapporter le nom, le prénom, la ville et le statut de chaque personne dans la table Person. Si l'adresse de personId ne figure pas dans la table Address, elle est signalée comme null .
Renvoie la table de résultats dans n'importe quel ordre.
-
Analyse du sujet : Parce que si l'adresse de personId n'existe pas dans la table Address, le rapport est nul mais les informations de la table personId doivent toujours être sorties, il s'agit donc d'une méthode de jointure externe :
select
FirstName, LastName, city, state
from
person p left outer join address a
on p.personid = a.personid
Au fait, passez en revue quelques connexions
-
jointure interne : les deux valeurs de table existent dans la jointure interne
-
jointure externe : il peut y avoir des valeurs nulles dans les valeurs de la table jointe
Résumer:
- A jointure interne B : prendre l'intersection
- A jointure gauche B : prend tout A, si B n'a pas de valeur correspondante, il est nul
- A right join B : prend tout B, si A n'a pas de valeur correspondante, il est nul
- A extérieur plein B : prenez l'union, les valeurs qui ne se correspondent pas sont nulles
Les conditions de filtrage sont écrites après le
Sujet 2 : Employés qui dépassent le revenu de leur gestionnaire
181. Les employés qui gagnent plus que leurs managers
- Exigences du sujet
Écrivez une requête SQL pour trouver les employés qui gagnent plus que leurs managers.
- Analyse du sujet : Il est nécessaire de trouver des employés dont le revenu est supérieur à celui du responsable. Il s'agit d'un problème d'auto-connexion évident. Les informations que nous devons comparer sont dans le même tableau. Nous pouvons comprendre cette relation comme une auto-connexion. problème.
- Auto-association: L'auto-association signifie littéralement que soi-même est connecté à soi-même. À l'heure actuelle, une seule table est utilisée pour la jointure. À ce stade, nous pouvons considérer l'auto-jointure comme deux tables identiques jointes.
- Ce problème est souvent lié à deux informations liées dans la même table. Les employés managers sont tous dans la table des employés, visiblement des problèmes d'auto-connexion
# 形式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;
*/
Sujet 3 : Rechercher les e-mails en double
182. Trouver des e-mails en double
- Exigence : Rechercher tous les e-mails en double dans le tableau
- Idée : Il s'agit en fait d'un email en double, indiquant que le décompte sera dédupliqué après regroupement par email. On garde le résultat de count(email) > 1 comme ans
select
email
from
person
group by
email
having
count(email) > 1;
Résumer
- Le sujet d'aujourd'hui est principalement de passer en revue plusieurs méthodes de jointure de table, comment comprendre la jointure de table en utilisant l'intersection d'ensembles à comprendre, l'intersection de jointure interne, l'union de jointure externe complète, la jointure externe gauche externe droite : toutes les informations sur les tables gauche et droite, aucune écriture d'association nul
- Requête d'auto-jointure de table, la même table peut former une auto-jointure avec elle-même pour interroger
- Il existe également des requêtes groupées Veuillez noter un ordre de priorité : où > grouper par > ayant > trier par