sqlでの条件指定や、updateなどで、他のテーブルを参照したいとき、
書き方としては2つある。
・テーブルを JOINさせる方法
SELECT * テーブルA INNER JOIN テーブルB ON テーブルA.カラムC = テーブルB.カラムD WHERE テーブルB.カラムE= 値
このSQLの内容としては、
WHERE: この条件に当てはまるカラムを選択。
INNNER JOIN: テーブルAとテーブルBを結合したテーブル
ON: このカラムを基準に結合する
WHEREやONの部分は、カラム名が同じでなければ、テーブル名は省略できる。
すでに結合されたテーブルと考える。分かり易さのためには書いた方がいい。
・テーブル結合しない方法
単に、fromのところに、テーブル名を2つ書いて、カラム名の前にもテーブル名をつければいい。
fromのところは、取り出したい方のテーブルだけ書けばいい。
下の例文は、上と同じ結果が得られる。
SELECT * FROM テーブルA, テーブルB WHERE テーブルA.カラムA = テーブルB.カラム B
これも、カラム名が同じでなければ、WHEREの部分のテーブル名は省略可能である。
UPDATE文なども他のテーブルを参照して、値を更新したい時、JOINしなくてもできる。
どちらがいいのか?
上のように全てのカラムを取得する場合、両方のテーブルで、カラムが大量にあれば、どちらも処理速度は遅くなる。
別々のサーバーに、各テーブルをおいている場合はJOINできない。
全てのカラムを取得するような大量にメモリを使う場合でなければ、どちらでもいいのかもしれない。
しかし、JOINは遅くなるという記事の方が多いか。。。
https://qiita.com/yuku_t/items/208be188eef17699c7a5
![]() |
|