Base de données LeetCode Pratique quotidienne (1)

contenu

avant-propos

Sujet 1 : Fusionner deux tables

Au fait, passez en revue quelques connexions

Résumer:

Sujet 2 : Employés qui dépassent le revenu de leur gestionnaire

Sujet 3 : Rechercher les e-mails en double

Résumer


avant-propos

MYSQL doit connaître, démarrer en détail, un article vous aidera à apprendre SQL et doit connaître le blog-CSDN du blog de Xiaojie312 csdn.net/weixin_53695360/article/details/123770512?spm=1001.2014.3001.5502

  • 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

175. Combinez 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:

  1. A jointure interne B : prendre l'intersection
  2. A jointure gauche B : prend tout A, si B n'a pas de valeur correspondante, il est nul
  3. A right join B : prend tout B, si A n'a pas de valeur correspondante, il est nul
  4. 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 

Je suppose que tu aimes

Origine blog.csdn.net/weixin_53695360/article/details/123985354
conseillé
Classement