[解決済み] SQL - 左結合から重複を削除する
2022-02-08 09:55:22
質問
2つのテーブルの結合ビューを作成していますが、テーブル2から不要な重複を取得しています。
たとえば、table1 には 9000 件のレコードがあり、結果のビューにまったく同じレコードを含める必要があります。table2 には同じ FKID の複数のレコードがあるかもしれませんが、1 つのレコードのみを返したいです (顧客にはランダムに選択してもらってかまいません)。 私は正しく動作する以下のコードを持っていますが、パフォーマンスは期待よりも遅いです(14秒以上)。
SELECT
OBJECTID
, PKID
,(SELECT TOP (1) SUBDIVISIO
FROM dbo.table2 AS t2
WHERE (t1.PKID = t2.FKID)) AS ProjectName
,(SELECT TOP (1) ASBUILT1
FROM dbo.table2 AS t2
WHERE (t1.PKID = t2.FKID)) AS Asbuilt
FROM dbo.table1 AS t1
パフォーマンスを高速化するために、joinで同じようなことをする方法はありますか?
SQL Server 2008 R2 を使っています。
以下のコードで近づきましたが(~0.5秒)、「Distinct」はすべてのカラムが重複している場合(FKIDだけでなく)レコードをフィルタアウトするだけです。
SELECT
t1.OBJECTID
,t1.PKID
,t2.ProjectName
,t2.Asbuilt
FROM dbo.table1 AS t1
LEFT JOIN (SELECT
DISTINCT FKID
,ProjectName
,Asbuilt
FROM dbo.table2) t2
ON t1.PKID = t2.FKID
テーブルの例
table1 table2
OID, PKID FKID, ProjectName, Asbuilt
1, id1 id1, P1, AB1
2, id2 id1, P5, AB5
3, id4 id2, P10, AB2
5, id5 id5, P4, AB4
上記の例では、id5/P4/AB4, id2/P10/AB2, および (id1/P1/AB1 OR id1/P5/AB5) のレコードが返されるはずです。
検索してみると、似たような質問がありましたが、私の問題を解決してくれるものはありませんでした。
リンク
,
リンク
よろしくお願いします。 初めての投稿なので、何かルール違反があったら教えてください。
どのように解決するのですか?
これは、あなたが要求した結果を与え、最高のパフォーマンスを発揮するはずです。
SELECT
OBJECTID
, PKID
, t2.SUBDIVISIO,
, t2.ASBUILT1
FROM dbo.table1 AS t1
OUTER APPLY (
SELECT TOP 1 *
FROM dbo.table2 AS t2
WHERE t1.PKID = t2.FKID
) AS t2
関連
-
[解決済み] SELECT DISTINCTを指定した場合、ORDER BY項目は必ず選択リストに表示されます。
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] SQL ServerにおけるLEFT JOINとLEFT OUTER JOINの比較
-
[解決済み] SQL ServerでJOINを使用してUPDATE文を実行するにはどうすればよいですか?
-
[解決済み] JOINとINNER JOINの違いについて
-
[解決済み】「INNER JOIN」と「OUTER JOIN」の違いは何ですか?
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
-
[解決済み] SQL ServerでINNER 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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Excelに合体的な関数はありますか?
-
[解決済み】SQLクエリ「00904. 00000 - "%s: 無効な識別子"
-
[解決済み] データ型 varchar の変換エラー
-
[解決済み] ora-06553 pls-306 'ogc_x' の呼び出しで引数の数または種類が誤っている。
-
[解決済み] varchar 値の変換で int カラムがオーバーフローしました。
-
[解決済み] 集計を行わずに行から列へピボット移動する
-
[解決済み] nvarchar 値 ... をデータ型 int に変換する際に、変換に失敗しました。
-
[解決済み] SQLでchar値をmoneyに変換できない
-
[解決済み] SQLiteでどのようにピボットするか、つまり、長い形式で保存されたテーブルを広い形式で選択するか?
-
[解決済み] SQL/mysql - Select distinct/UNIQUE but return all column?