
SQLでデータを1件だけ取得したいのですが。
以下のようなテーブルが2つあるとします。
------------------------------------
テーブルA テーブルB
値X 値X 値Y
1 1 20
2 2 NULL
3 2 60
4 2 70
4 NULL
4 NULL
------------------------------------
ここで、テーブルAの値Xと、テーブルBの値Xをリンクさせます。
テーブルAにデータがあれば、テーブルBに無くても出力します(外部結合イメージ)
テーブルAの値Xに対して、テーブルBの値Xは2件以上リンクされる可能性があります。
この場合は1件のみ出力します。
その1件の決め方は、テーブルBの値YがNULLでは無く最大の物です。
但し値Yは全てNULLの可能性もあるので、その場合NULLとして1件出力します。
上記の出力イメージ
------------------------------------
値X 値Y
1 20 (1件の場合そのまま出力。1件がNULLでもそのまま出力)
2 70 (NULLではない最大の1件を出力)
3 NULL (テーブルBになくても出力)
4 NULL (値が全てNULLの場合、NULLとして1件出力)
------------------------------------
どのようなSQLを記載すれば実現可能でしょうか?
No.1ベストアンサー
- 回答日時:
select テーブルA.x
,( select b.y from ( select テーブルB.x, テーブルB.y, row_number() over( partition by テーブルB.x order by テーブルB.y desc nulls last ) rn from テーブルB ) b
where テーブルA.x = b.x and b.rn = 1 ) y
from テーブルA;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- MySQL mysqlの結合について教えてください 1 2022/05/19 15:13
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- SQL Server AccessのInsertクエリのあとつづけてDeleteクエリを行いたいがSQLでどう書いたらいい 3 2023/05/27 14:12
- Oracle SQL update方法 2 2022/06/22 14:07
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】大変な警告
【大喜利】「今このパソコンは大変危険な状態です」という警告メッセージを無視してパソコンを開いたら、こんなことが起こった
-
歳とったな〜〜と思ったことは?
歳とったな〜〜〜、老いたな〜〜と思った具体的な瞬間はありますか?
-
最強の防寒、あったか術を教えてください!
とっても寒がりなのですが、冬に皆さんがされている最強の防寒、あったか術が知りたいです!
-
AIツールの活用方法を教えて
みなさんは普段どのような場面でAIツール(ChatGPTなど)を活用していますか?
-
「これいらなくない?」という慣習、教えてください
現代になって省略されてきたとはいえ、必要性のない慣習や風習、ありませんか?
-
SELECTで1件のみ取得するには?
Oracle
-
SELECT 文 GROUP での1件目を取得
SQL Server
-
ORACLEで一番最初の結果だけを取る方法
Oracle
-
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQL、2つのテーブルで条件一致...
-
テーブル名をカラムとして取得...
-
sqlplusで表示が変なので、出力...
-
update文で改行を入れる
-
ROWNUMでUPDATEをしたいのです...
-
SQL*LoaderでCSVから指定した列...
-
SQLでSUMなどの関数でデータが...
-
特定のカラムが更新されたとき...
-
SQL 複数テーブルのupdate
-
半角英数文字の抽出がしたい。
-
UPDATE文
-
DBからタブ区切りのCSVデータを...
-
Viewのカラムの長さが不明?
-
Oracleのview、synonymをCOMPIL...
-
SQLでデータを1件だけ取得した...
-
descでdefault値やキーなどを表...
-
件数とデータを同時に取得する...
-
日付の古い順番に削除したいの...
-
OracleのSQLで同テーブルのカラ...
-
PLSQLのNumber型の初期化
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQL、2つのテーブルで条件一致...
-
テーブル名をカラムとして取得...
-
SQL*LoaderでCSVから指定した列...
-
update文で改行を入れる
-
sqlplusで表示が変なので、出力...
-
ROWNUMでUPDATEをしたいのです...
-
SQLでSUMなどの関数でデータが...
-
SQL 複数テーブルのupdate
-
カラム位置変更
-
特定のカラムが更新されたとき...
-
テーブルやカラムの物理名のネ...
-
件数とデータを同時に取得する...
-
数値をNUMBER型にするかCHAR型...
-
LONG型の先頭250バイトを Varch...
-
UPDATE文
-
DBからタブ区切りのCSVデータを...
-
Viewのカラムの長さが不明?
-
SQL(oracle)でご助言いただきた...
-
SQLで違うテーブルの値を比較し...
-
distinct をexistsに変換する
おすすめ情報