« vi V.S. emacs | メイン | Delphiな日々 »

一方のテーブルに存在して、一方のテーブルには存在しないレコードの確認

一方のテーブルに存在して、一方のテーブルには存在しないレコードの確認。

これをOUTER JOINでやってみる。
どれくらい時間がかかるのか。

mysql> select t1.CODE from M_RAIL t1 LEFT OUTER JOIN M_STATION t2 ON t1.CODE = t2.CODE WHERE t2.CODE IS NULL ;
+---------+
| CODE |
+---------+
| 0101032 |
| 0101033 |
| 0101081 |
| 0101091 |
| 0101101 |
| 0101111 |
| 0101121 |
| 0103021 |
| 0103031 |
| 0103041 |
| 0104011 |
| 0104021 |
| 0201011 |
| 0403011 |
| 2104011 |
| 2701093 |
| 2104011 |
+---------+
17 rows in set (1 min 17.40 sec)

OUTER JOINは INNER JOINと違い、条件に一致しなかったレコードも含めて結合します。
LEFT OUTER JOINは、左外部結合なので、左を基準に、右オペランドのテーブルから
一致するレコードがない部分はNULL値で埋められます。
上のSQLでは、路線テーブル(M_RAIL)にあって、駅テーブル(M_STATION)にないレコードの路線コードを表示しています。

路線名も出力します。

mysql> select t1.CODE, t1.NAME_KANJI from M_RAIL t1 LEFT OUTER JOIN M_STATION t2 ON t1.CODE = t2.CODE WHERE t2.CODE IS NULL ;
+---------+-------------------------------------+
| CODE | NAME_KANJI |
+---------+-------------------------------------+
| 0101032 | [JR]根室本線 |
| 0101033 | [JR]根室本線 |
| 0101081 | [JR]留萌本線 |
| 0101091 | [JR]富良野線 |
| 0101101 | [JR]宗谷本線 |
| 0101111 | [JR]石北本線 |
| 0101121 | [JR]釧網本線 |
| 0103021 | [札幌市営]南北線 |
| 0103031 | [札幌市営]東豊線 |
| 0103041 | [札幌市電]山鼻線 |
| 0104011 | [函館市電]2系統 |
| 0104021 | [函館市電]5系統 |
| 0201011 | 津軽鉄道 |
| 0403011 | [仙台空港鉄道]仙台空港線 |
| 2104011 | 神岡鉄道 |
| 2701093 | [JR]北陸本線 |
| 2104011 | 神岡鉄道 |
+---------+-------------------------------------+
17 rows in set (1 min 17.28 sec)

トラックバック

このエントリーのトラックバックURL:
http://iplusone.sakura.ne.jp/mt/mt-tb.cgi/4839

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2008年01月16日 16:12に投稿されたエントリーのページです。

ひとつ前の投稿は「vi V.S. emacs」です。

次の投稿は「Delphiな日々」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.34