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 3 years have passed since last update.

MySQL SQL文 副問合せ サブクエリの例文

Posted at

目的

  • 一瞬サブクエリの実行部分で詰まったので例文を記載する

実施環境

  • ハードウェア環境
項目 情報
OS macOS Catalina(10.15.3)
PC機種 MacBook Pro (16-inch ,2019)
プロセッサ 2.6 GHz 6コアIntel Core i7
メモリ 16 GB 2667 MHz DDR4
グラフィックス AMD Radeon Pro 5300M 4 GB Intel UHD Graphics 630 1536 MB
  • ソフトウェア環境
項目 情報 備考
MySQLバージョン 8.0.19 for osx10.13 on x86_64 Homwbrewを用いて導入

前提環境

ageの値が最大のレコードを取得する

  • サブクエリ未使用で実施する場合は下記を実行する。

    mysql> -- ageの最大値を求める
    mysql> select max(age)
        -> from users;
    +----------+
    | max(age) |
    +----------+
    |      113 |
    +----------+
    mysql> -- 先の出力をもとに下記を実行する
    mysql> select *
        -> from users
        -> where age = 113;
    +----+---------------+-----+--------+-----------------------+-----------+---------------------+---------------------+
    | id | name          | age | gender | email                 | authority | created_at          | updated_at          |
    

+----+---------------+-----+--------+-----------------------+-----------+---------------------+---------------------+
| 8 | 渡邉 キヨ | 113 | female | kiyo_wataab@email.com | user | 2020-04-08 16:39:29 | 2020-04-08 17:53:08 |
+----+---------------+-----+--------+-----------------------+-----------+---------------------+---------------------+
```

  • サブクエリを使用して実施する場合は下記を実行する。

    mysql> select *
        -> from users
        -> where age = (select max(age) from users);
    +----+---------------+-----+--------+-----------------------+-----------+---------------------+---------------------+
    | id | name          | age | gender | email                 | authority | created_at          | updated_at          |
    

+----+---------------+-----+--------+-----------------------+-----------+---------------------+---------------------+
| 8 | 渡邉 キヨ | 113 | female | kiyo_wataab@email.com | user | 2020-04-08 16:39:29 | 2020-04-08 17:53:08 |
+----+---------------+-----+--------+-----------------------+-----------+---------------------+---------------------+
```

ちょっとした解説(逆に混乱した場合は無視してください)

  • サブクエリは少しだけ複雑なのだが考え方は至ってシンプルである。
  • サブクエリ未使用の場合、「ageカラムの最大値を求める→次のselect文でのwhereで先のageの最大値を用いて表示切り分け」としている。
  • サブクエリを使用する場合、「select文のwhereでageの最大値を求めてそのまま使用」としている。
  • 最終結果であるレコードを検索する部分でageの最大値を求めているのかそれより先に別のselect文とmax関数でageの最大値を求めているのかの違いである。
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?