質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

5回答

7109閲覧

SQL サブクエリってなんのこっちゃ

earnest_gay

総合スコア615

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2016/09/12 07:45

メインクエリとサブクエリの違い。

たまに同じ技術者で「○○の案件か〜。その部分ではどんなサブクエリとか使ってたの?」とか話したりしますが、
サブクエリってなんでしょうか?笑

クエリはクエリ、つまりSQL文じゃないんでしょうか?

ちらっと調べただけなので合ってるか確認も含めての投稿ですが、
下記のような認識ですがどうでしょうか?

SELECT user_data.id ,birth_year,birth_month,birth_day,pref,city, major_category,major_skill,cont_date,introduction FROM user_data,user_pr //ここまでがメインクエリ? //ここからがサブクエリ? WHERE user_data.id=user_pr.user_id ORDER BY id DESC LIMIT ? , 5

そうだとしたら、会話的には

「ん〜ORDER句はもちろん、LIMIT句も使うよね。あ、あとJoinも使ってたなぁ〜。」

ってことですか?
お恥ずかしいですが、宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

回答は出てるので当方からは少し補足をば。

ざっくり言うとサブクエリとは、1番外側のSELECT句の中に出てくるSELECT句という認識で問題ありませんが、
サブクエリにも内訳があり、
副問合わせ相関副問合わせと呼ばれるものがあります。

前者はメインのクエリと独立して単体でも機能するクエリを指し、
後者はメインのクエリの結果1行ごとに実行されるもので、
それ単独では機能しないものを指し呼ばれます。

以下それぞれの具体例です。

  • 副問合わせ

SQL

1SELECT id, name 2FROM table A 3WHERE A.id = ( -- ここから副問合わせ 4 SELECT MAX(id) 5 FROM table 6)
  • 相関副問合わせ

SQL

1SELECT id, name 2FROM table A 3WHERE 4 NOT EXISTS( -- ここから相関副問合わせ 5 SELECT * 6 FROM table B 7 WHERE A.id < B.id 8)

とまぁ厳密には上記のような違いはありますが、
どちらもまとめてサブクエリと言うことの方が多いと思われます。

投稿2016/09/12 09:51

編集2016/09/12 09:58
Panzer_vor

総合スコア1636

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

earnest_gay

2016/09/12 13:43

ありがとうございます。 そういえば副クエリとか記憶にあるようなないような、、、
guest

0

サブクエリとはクエリに入れ子になっているクエリです。

sql

1select * from (select * from table) sub;

※select * from tableの部分がサブクエリです

投稿2016/09/12 07:52

popobot

総合スコア6586

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

earnest_gay

2016/09/12 13:46

ありがとうございます。!
guest

0

WHERE句ですが、条件の値をテーブルの列名や定数を指定するのが基本的な使い方ですが、「別の検索結果」を指定することもできます。この「別の検索結果」を得るクエリーをサブクエリー(または「副問合せ」)と呼ぶのが一般的だと思います。
たとえばこんな感じ

投稿2016/09/12 07:59

archiver

総合スコア1557

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

earnest_gay

2016/09/12 13:43

ありがとうございます。 参考にさせていただきます。
guest

0

ベストアンサー

日本語で言うと副問い合わせというやつですね。
1つのクエリ中で、別のクエリの問い合わせ結果を使うことを言います。
紹介しているサイトを見る方が早いでしょう。
http://www.sql-reference.com/select/subquery.html

投稿2016/09/12 07:58

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

earnest_gay

2016/09/12 13:45

ありがとうございます。 サブクエリという人もいれば副クエリという人もいますね、、、 そういった会話に慣れてれば瞬時に「ああ、副クエリのことね」ってわかりそうですが、トークがまだまだ追いつかないです。汗
guest

0

「サブクエリ」でぐぐると、一番上に出てくるサイトによると、SELECT ... (SELECT ..) という書き方の (SELECT ... ) のほうをサブクエリと呼ぶようです。

投稿2016/09/12 07:54

mit0223

総合スコア3401

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

earnest_gay

2016/09/12 13:46

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問