[解決済み] SQLでOUTER/CROSS APPLYを使用する場合の実際の例
2022-03-09 02:54:49
質問
を見てきました。
CROSS / OUTER APPLY
同僚と一緒に、どこで使うかの実例を見つけるのに苦労しています。
を見るのにかなりの時間を費やしました。 Inner JoinよりもCross Applyを使用すべきなのはどのような場合ですか? とググってみましたが、主な(唯一の)例はかなり奇妙なようです(あるテーブルの行数を使用して、別のテーブルから何行を選択するかを決定する)。
このシナリオには
OUTER APPLY
:
連絡先テーブル(各連絡先につき1レコードを含む) 通信項目テーブル(各連絡先の電話番号、FAX番号、Eメールを含むことができる)
しかし、サブクエリ、一般的なテーブル表現を使用します。
OUTER JOIN
と
RANK()
と
OUTER APPLY
はすべて同じように動作するようです。このことは、このシナリオが
APPLY
.
実際の事例を紹介して、機能の説明に役立ててください
どのように解決するのですか?
のいくつかの用途は
APPLY
は...
1) グループごとの上位N個のクエリ (カーディナリティによってはより効率的です)
SELECT pr.name,
pa.name
FROM sys.procedures pr
OUTER APPLY (SELECT TOP 2 *
FROM sys.parameters pa
WHERE pa.object_id = pr.object_id
ORDER BY pr.name) pa
ORDER BY pr.name,
pa.name
2) 外側のクエリの各行に対してテーブル値付き関数を呼び出す
SELECT *
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle)
3) カラムエイリアスの再利用
SELECT number,
doubled_number,
doubled_number_plus_one
FROM master..spt_values
CROSS APPLY (SELECT 2 * CAST(number AS BIGINT)) CA1(doubled_number)
CROSS APPLY (SELECT doubled_number + 1) CA2(doubled_number_plus_one)
1NFに違反するテーブル構造を想定して......。
CREATE TABLE T
(
Id INT PRIMARY KEY,
Foo1 INT, Foo2 INT, Foo3 INT,
Bar1 INT, Bar2 INT, Bar3 INT
);
2008+を使用した例
VALUES
の構文があります。
SELECT Id,
Foo,
Bar
FROM T
CROSS APPLY (VALUES(Foo1, Bar1),
(Foo2, Bar2),
(Foo3, Bar3)) V(Foo, Bar);
2005年
UNION ALL
を使用することができます。
SELECT Id,
Foo,
Bar
FROM T
CROSS APPLY (SELECT Foo1, Bar1
UNION ALL
SELECT Foo2, Bar2
UNION ALL
SELECT Foo3, Bar3) V(Foo, Bar);
関連
-
[解決済み】CREATE VIEW は、バッチ内の唯一のステートメントでなければなりません。
-
[解決済み] リンクされたサーバーの NULL に対して OLE DB プロバイダー Microsoft.Jet.OLEDB.4.0 のインスタンスを作成できません。
-
[解決済み] SQLクエリで2つの列から値を引き算する
-
[解決済み] SQL ServerにおけるLEFT JOINとLEFT OUTER JOINの比較
-
[解決済み] INNER JOINよりもCROSS APPLYを使用すべきなのはどのような場合ですか?
-
[解決済み] T-SQLでnot equalには!=と<>のどちらを使うべきですか?
-
[解決済み] MySQLでシングルクォート、ダブルクォート、バックスティックを使用する場合
-
[解決済み] なぜインデックス作成時にINCLUDE句を使うのか?
-
[解決済み] SQL ServerでGROUP BYを使って文字列を連結する方法とは?
-
[解決済み] T-SQL文の接頭辞Nの意味と使うべきタイミングは?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】''付近の構文が正しくない
-
[解決済み】オペランド型の衝突:intはdateと互換性がない + INSERT文はFOREIGN KEY制約と衝突した
-
[解決済み】SQLクエリ「00904. 00000 - "%s: 無効な識別子"
-
[解決済み】一括読み込みデータ変換エラー(指定されたコードページに対して型の不一致または無効な文字)1行目4列目(年)について)
-
[解決済み] pg_restoreです。[archiver] 入力ファイルはテキスト形式のダンプであるように見えます。psql を使用してください。
-
[解決済み] WHERE x IN (5) vs WHERE x = 5 ...なぜINを使うのか?
-
[解決済み] Varchar は Sum 演算子では無効です。
-
[解決済み] エラー: 名前解析スクリプトで正しい関数に渡された長さのパラメーターが無効です。
-
[解決済み] SQL ServerにおけるLEFT JOINとLEFT OUTER JOINの比較
-
[解決済み] INNER JOINよりもCROSS APPLYを使用すべきなのはどのような場合ですか?