0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【MySQL】左外部結合を用いて表を結合

Last updated at Posted at 2019-11-11

#概要
アウトプット用に、学習した内容を紹介していきます。
本日はMySQLでLEFT JOINを使ってみます。

#環境
Mac OS Mojave 10.14.6
MySQL 5.7.28

#表の結合

以下の二つの表がデータベースに登録されており、これを結合してユーザーが投稿した内容を表示したいとします。

userテーブル

id name gender age
1 john m 18
2 paul m 20
3 alice f 15
4 dabid m 17

postsテーブル

id user_id content
1 1 Hello
2 1 World
3 2 I'm Paul.
4 4 😀
5 5 😂

posts表の全てのcontentと、それに対応したusers表のnameが欲しいカラムです。
この時、以下のSELECT文による左外部結合を用いることで欲しい結果が得られます。

mysql> SELECT name,content
    -> FROM posts
    -> LEFT JOIN users
    -> ON posts.user_id = users.id;
出力
+-------+-----------+
| name  | content   |
+-------+-----------+
| john  | Hello     |
| john  | World     |
| paul  | I'm Paul. |
| dabid | 😀          |
| NULL  | 😂          |
+-------+-----------+
5 rows in set (0.00 sec)

無事にnameと、それに対応するcontentが表示されました。また'😂'に対応するnameがusers側に存在しないため、nameがNULLになっています。

ちなみに上記の表をINSERTで作成しようとすると、posts表・contentカラムに登場してくるシングルクォーテーション、そして絵文字で、それぞれエラーを吐いてしまう可能性があります。

シングルクォーテーションはエスケープ、絵文字は文字コードをutf8からutf8mb4に変更することで対応が可能ですので、気になった方はぜひ調べてみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?