忍者ブログ

ゆるいSEの小ネタ集

ゆるキャラ好きのITエンジニアが書くTips。 ゆるキャラ命なSEのIT徒然草 https://itmagic.hatenablog.com/

[SQLServer]SQL JOINつれづれ

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

[SQLServer]SQL JOINつれづれ

--------------------------------------------------
◆JOINの種類
--------------------------------------------------
・INNER JOIN
 ⇒内部結合。
・LEFT JOIN(LEFT OUTER JOIN)
 ⇒JOIN句の左側のテーブルを主テーブルとしてJOIN
・RIGHT JOIN(RIGHT OUTER JOIN)
 ⇒JOIN句の右側のテーブルを主テーブルとしてJOIN
・FULL JOIN(FULL OUTER JOIN)
 ⇒JOIN句の双方のテーブルのレコードを残してJOIN
--------------------------------------------------
◆例
--------------------------------------------------
■データ
tablea
id name
1  tanaka
2  yoshida

tableb
id weight
1  60
3  80


■INNER JOIN
SELECT a.id,a.name,b.weight FROM a
INNER JOIN b ON a.id = b.id

[結果]
  id  name      weight
  1   tanaka    60
  ⇒両tableにあるid=1のレコードのみ取得


■LEFT JOIN(LEFT OUTER JOIN)
SELECT a.id,a.name,b.weight FROM a
LEFT JOIN b ON a.id = b.id

[結果]
  id  name      weight
  1   tanaka    60
  2   yoshida   NULL
  ⇒tableaにあるidのレコードのみ取得


■RIGHT JOIN(RIGHT OUTER JOIN)
SELECT a.id,a.name,b.weight FROM a
RIGHT JOIN b ON a.id = b.id

[結果]
  id  name      weight
  1   tanaka    60
  3   NULL      80
  ⇒tablebにあるidのレコードのみ取得


■FULL JOIN(FULL OUTER JOIN)
  SELECT a.id,a.name,b.weight FROM a
  FULL JOIN b ON a.id = b.id

[結果]
  id  name      weight
  1   tanaka    60
  2   yoshida   NULL
  3   NULL      80
  ⇒tablea、tablebいずれかにあるidのレコードを取得

--------------------------------------------------
◆JOINが遅い場合の小技
--------------------------------------------------
JOINのSQLに時間を要する場合、HASH JOINと明記することで劇的に改善する場合がある。
例)LEFT OUTER JOIN ⇒ LEFT OUTER HASH JOIN

※行数の多いテーブルに対しネステッドループ結合を行う場合に時間がかかるケースがある。
 この場合はハッシュ結合を明記することで改善する。
PR

コメント

ただいまコメントを受けつけておりません。

プロフィール

HN:
ゆるキャラ命
性別:
非公開

P R