データベースLeetCodeデイリープラクティス(1)

コンテンツ

序文

トピック1:2つのテーブルをマージする

ちなみに、いくつかの接続を確認してください

要約:

トピック2:マネージャーの収入を超える従業員

トピック3:重複するメールを探す

要約する


序文

MYSQLは知っている必要があり、詳細に開始する必要があります。1つの記事がSQLの学習に役立ち、知っている必要があります_Xiaojie312のブログ-CSDNブログcsdn.net/weixin_53695360/article/details/123770512?spm=1001.2014.3001.5502

  • 上記は、知っておく必要のある基本的なmysqlエントリであり、SQL構文に精通していない友人がさまざまな操作をすばやく確認して開始するのに役立ちます。
  • このシリーズは、Xiaojieのmysqlの日常的な練習です。役立つと思われる場合は、Xiaojieに注意を払い、SQLの問題を一緒に練習して、さまざまなクエリテーブルのマージ操作に習熟してください。将来のインタビューの基礎を築いてください。

トピック1:2つのテーブルをマージする

175.2つのテーブルを組み合わせる

  • トピック要件: 

    SQLクエリを記述して、Personテーブルの各人物の姓、名、都市、およびステータスを報告します。personIdのアドレスがAddressテーブルにない場合は、nullとして報告されます。

    結果テーブルを任意の順序で返します。

  • トピック分析:personIdのアドレスがAddressテーブルに存在しない場合、レポートはnullですが、personIdテーブルの情報を出力する必要があるため、これは外部結合メソッドです。 

select 
    FirstName, LastName, city, state
from 
    person p left outer join address a
    on p.personid = a.personid

ちなみに、いくつかの接続を確認してください

  • 内部結合:両方のテーブル値が内部結合に存在します

  • 外部結合:添付の表の値にnullが含まれている可能性があります

要約:

  1. 内側の結合B:交差点を取ります
  2. 左結合B:すべてのAを取得します。Bに対応する値がない場合、それはnullです。
  3. 右結合B:すべてのBを取得し、Aに対応する値がない場合は、nullになります。
  4. フルアウターB:ユニオンを取り、互いに対応しない値はnullです

 

フィルター条件は後に書き込まれます

トピック2:マネージャーの収入を超える従業員

181.上司よりも稼ぐ従業員

  •  トピック要件

SQLクエリを記述して、マネージャーよりも稼いでいる従業員を見つけます。

  • トピック分析:マネージャーよりも収入の高い従業員を見つける必要があります。これは明らかな自己接続の問題です。比較する必要のある情報は同じ表にあります。この関係は自己接続として理解できます。問題。
  • 自己関連付け:自己関連付けとは、文字通り、自分自身が自分自身に接続されていることを意味します。現時点では、結合に使用されるテーブルは1つだけです。現時点では、自己結合は2つの同一のテーブルが結合されていると考えることができます。
  • この問題は、多くの場合、同じテーブル内の2つのリンクされた情報です。従業員マネージャーはすべて従業員テーブルにあり、明らかに自己接続の問題です

# 形式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;
*/ 

トピック3:重複するメールを探す

182.重複するメールを探す

 

  • 要件:テーブル内の重複するすべての電子メールを検索します
  • アイデア:重複したメールであることが判明しました。これは、メールでグループ化した後、カウントが重複排除されることを示しています。count(email)>1の結果をansとして保持します。 

select 
    email
from
    person
group by
    email
having 
    count(email) > 1;

要約する

  • 今日のトピックは、主にいくつかのテーブル結合方法、理解する集合の共通部分を使用してテーブル結合を理解する方法、内部結合交差、完全外部結合結合、左外部右外部結合を確認することです:左右のテーブルに関するすべての情報、関連付けなしヌル
  • テーブルの自己結合クエリ。同じテーブルがそれ自体と自己結合を形成してクエリを実行できます。
  • グループ化されたクエリもあります。優先順位に注意してください。ここで、> group by> have> order by 

おすすめ

転載: blog.csdn.net/weixin_53695360/article/details/123985354