※ ChatGPTを利用し、要約された質問です(原文:SQL サブクエリで抽出したカラムについて)
SQLサブクエリで抽出したカラムを本クエリで一緒に表示する方法
このQ&Aのポイント
SQLのサブクエリを使用して、別のカラムを取得する方法について学びます。具体的には、サブクエリで取得したカラムを結果に表示する方法を解説します。
サブクエリを使用して得られた複数のカラムのうち、特定のカラムを結果に表示する方法を、具体的なSQL文を交えて説明します。
MySQLの環境で、テーブルを結合せずにサブクエリを使用してカラムを抽出する方法について解説します。サブクエリで取得したカラムとメインクエリの結果を一緒に表示する方法を説明します。
サブクエリで抽出したカラムを
本クエリでの結果と一緒に表示したいのですが
どのように実現してよいかわからず困っております。
詳細としては、下記のようなことをしたいと考えております。
文中の1)と2)は文章下部にあるSQLを指しております
-----------------------------------------------------------
最初は、1)のように凄く単純なSQLでよかったのですが
仕様が変わり、TBL2で取得した新しいカラムも一緒に
本クエリでの結果として取得できれば、SQLを2回実行せずに済むなと考えたのですが、
2)のように色々と試行錯誤したのですが、実現できません。
(2)は単なる空想ですが…)
そこで、わかる方にお伺いしたいのですが、
副問い合わせで取得した複数カラムの中の1つのカラム【2)でいうところのTBL2.X】
を
2)のように"select TBL1.A , TBL2.X"として、結果を得ることは可能でしょうか。
ただし、
TBL1のカラムAは、TBL2に存在しない
TBL2のカラムXは、TBL1には存在しない
カラムBは、TBL1、TBL2に存在する
の条件となっております
環境はMysqlです
テーブル結合の方法も考えたのですが、
TBL2で、日付でソートし、その上位100件だけを
持ってきたいと思ったので、副問い合わせで一気に抽出しようとこの方法を考えまし
た
お分かりになる方がいらっしゃいましたらよろしくお願いします
1)SQL
------------
select TBL1.A
from TBL1
where TBL1.B in (
select TBL2.B
from TBL2
where 条件
)
2)想像SQL(こんな感じの事をしたい)
--------------
select TBL1.A , TBL2.X
from TBL1
where TBL1.B in (
select TBL2.B , TBL2.X
from TBL2
where 条件
order by TBL2.日付 desc
limit 100
)
お礼
ありがとうございました。 教えていただいたSQLを実行したら思い通りの結果が得られました (20件でのテストですが…) お騒がせしました