[解決済み] 左結合のトップ1
2022-11-11 06:08:12
質問
以下のクエリを考えると、dps_markersに同じマーカー・キーを持つ複数の行があるかもしれませんが、最初の行に対してのみ結合したいのです。 このクエリから上位1行を削除してORDER BYすると、mbg.marker_valueの値が得られますが、そのまま実行すると、常にnullが返されます。
SELECT u.id, mbg.marker_value
FROM dps_user u
LEFT JOIN
(SELECT TOP 1 m.marker_value, um.profile_id
FROM dps_usr_markers um (NOLOCK)
INNER JOIN dps_markers m (NOLOCK)
ON m.marker_id= um.marker_id AND
m.marker_key = 'moneyBackGuaranteeLength'
ORDER BY m.creation_date
) MBG ON MBG.profile_id=u.id
WHERE u.id = 'u162231993'
どのように解決するのですか?
LEFT JOINの代わりにOUTER APPLYを使用します。
SELECT u.id, mbg.marker_value
FROM dps_user u
OUTER APPLY
(SELECT TOP 1 m.marker_value, um.profile_id
FROM dps_usr_markers um (NOLOCK)
INNER JOIN dps_markers m (NOLOCK)
ON m.marker_id= um.marker_id AND
m.marker_key = 'moneyBackGuaranteeLength'
WHERE um.profile_id=u.id
ORDER BY m.creation_date
) AS MBG
WHERE u.id = 'u162231993';
JOINとは異なり、APPLYでは内側のクエリ内でu.idを参照することができます。
関連
-
[解決済み] テーブルが存在しない場合、"Table 'dbo.Foo' already exists." というエラーはどのように解決すればよいですか?
-
[解決済み] 監査失敗、クレデンシャル検証 4776
-
[解決済み] SQL ServerにおけるLEFT JOINとLEFT OUTER JOINの比較
-
[解決済み] SQL ServerでJOINを使用してUPDATE文を実行するにはどうすればよいですか?
-
[解決済み] JOINとINNER JOINの違いについて
-
[解決済み] 最初の行への結合方法
-
[解決済み】「INNER JOIN」と「OUTER JOIN」の違いは何ですか?
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
-
[解決済み] SQL ServerでINNER JOINを使用して削除するにはどうすればよいですか?
-
[解決済み] LEFT OUTER JOINはどのように左のテーブルに存在するよりも多くのレコードを返すことができますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] FOREIGN KEY制約で参照されているため、テーブルを切り捨てることができないのですか?
-
[解決済み] SQL Server xp_delete_file パラメータ
-
[解決済み] 各GROUP BY式は、外部参照でない列を少なくとも1つ含む必要があります。
-
[解決済み] パーセント値を保持するための適切なデータ型?
-
[解決済み] MS SQL Server 2005で行のSNoを自動的に設定する方法は?
-
[解決済み] sp_addrolememberとalter user with default schemaの違いは何ですか...?
-
[解決済み] 条件付きJOINステートメント SQL Server
-
[解決済み] SQLサーバーを使用して文字列を切り詰める方法
-
[解決済み] MS SQL Serverで数値をパーセントでフォーマットする
-
[解決済み] SQL Serverは、ビュークエリでLEFT JOINをLEFT OUTER JOINに置き換えます。