ちょうどポスグレの復習をしていたので動画ありがとうございます! 4:54:02 の部分で質問というか要望があります。 回答例としては SELECT * FROM country WHERE EXISTS( SELECT prefecture_id FROM prefecture WHERE prefecture.country_id = country.country_id ); となっているのですが、サブクエリのSELECT句にあるprefecture_idが何のためにあるか分からず試しに*(アスタリスク)やprefecture_name、SELECT句なし、などにしてみても同様の結果が得られました。このことからすでにWHERE句で絞り込みが済んでいるためにSELECT句がそもそも必要ないのでは?という結論に至ったのですが、こちらで理解合っていますでしょうか? また、調べていても相関サブクエリやEXISTSの解説で分かりやすい動画や資料が少ないのでぜひそこに特化した動画などを作成いただけると嬉しいです!
⚠学習前にご確認ください!
・誤りがあった場合に概要欄で訂正している場合があります。動画におかしな点があった場合、まずは概要欄のご確認をお願いします。
・動画で投影している教材は、本動画の概要欄からさいとうの公式LINEに登録頂くと無料でダウンロードできます!
※概要欄で訂正している内容が反映されたものをダウンロードできます。
ちょうどOSS-DBを取得しようと勉強していたので助かります!ありがとうございます!
コメントありがとうございます!
勉強頑張ってください!
ありがとうございます!
3連休で勉強頑張ります!
いいですね!
勉強頑張ってください!
ありがとうございました。
コメントありがとうございます!
ありがとうございました!
今まで自学していて、文法は分かるんだけど自分でSQLを作ることができないという状態だったのですが、どういった考えでSQLを組み立てたらよいかというような『考え方』を教えていただいたおかげで自分でSQLを作れるようになったと思います!
コメントありがとうございます!
ちょうどポスグレの復習をしていたので動画ありがとうございます!
4:54:02 の部分で質問というか要望があります。
回答例としては
SELECT *
FROM country
WHERE
EXISTS(
SELECT prefecture_id
FROM prefecture
WHERE prefecture.country_id = country.country_id
);
となっているのですが、サブクエリのSELECT句にあるprefecture_idが何のためにあるか分からず試しに*(アスタリスク)やprefecture_name、SELECT句なし、などにしてみても同様の結果が得られました。このことからすでにWHERE句で絞り込みが済んでいるためにSELECT句がそもそも必要ないのでは?という結論に至ったのですが、こちらで理解合っていますでしょうか?
また、調べていても相関サブクエリやEXISTSの解説で分かりやすい動画や資料が少ないのでぜひそこに特化した動画などを作成いただけると嬉しいです!
質問ありがとうございます!
まず文法上としては、以下どれでも同じ結果が得られます。
・SELECT prefecture_id
・SELECT *
・SELECT 1
・SELECT (列名などの記載なし)
記載いただいているように、SELECT句の内容を * (アスタリスク) などにしても結果は変わりません。
理由としては、EXISTS関数は「サブクエリの実行結果が1行以上存在するか」だけをチェックしているので、「SELECT 1」や「SELECT *」「SELECT」(列名などの記載なし) でも結果は問題ありません。
ただ、「SELECT *」としてしまうと、判定には不要なのに全ての列の値を取得してしまうため、性能劣化などのリスクが出てきます。なので「SELECT prefecture_id」など1つの列だけを取得するか、もしくは「SELECT 1」など、列の値ではなく固定値を取得する形の方が良いです。
以下だと「SELECT 1」が推奨されていたのでこう書くのが無難かと思います。
www.postgresql.jp/document/7.3/user/functions-subquery.html
(PostgreSQL 7.3.4 ユーザガイド 6.15.1. EXISTS)
「SELECT」(列名などの記載なし) でも結果としては同じものが得られますが、
ざっと調べてみた限り他のRDBMSで互換性があるか微妙だったので、「SELECT 1」が良さそうです。
@@itgakko ありがとうございます!よく分かりました!
@masamasa1212 よかったです!