2. 共通集合を取得するSQLのアンチパターン
共通集合を取得するSQLを考えます。サンプルデータ、修正対象のSQL、出力結果は下記です。
| Val1 | Val2 |
| 1 | 1 |
| 1 | 2 |
| 2 | 1 |
| 2 | 2 |
| 2 | 3 |
| 5 | 5 |
| Val1 | Val2 |
| 1 | 1 |
| 2 | 2 |
| 4 | 1 |
| 5 | 5 |
sakiテーブルにVal1とVal2が同じ行が存在する、motoテーブルの行を出力します。Val1とVal2を主キーとします。
select a.Val1,a.Val2 from moto a,saki b where a.Val1 = b.Val1 and a.Val2 = b.Val2 order by a.Val1,a.Val2;
| Val1 | Val2 |
| 1 | 1 |
| 2 | 2 |
| 5 | 5 |
上記のSQLのように、from句でsaki bと記述しているにも関わらず、select句で表別名bからのデータ表示を行っていないSQLは、書き換えることができます。上記のSQLを可読性の高い記述で同じ結果を取得できるSQLに修正して下さい。
sakiテーブルに存在することが出力条件であることに注目してSQLを修正してみます。
