[解決済み] SQL 左結合 最初のマッチのみ
2022-02-08 08:13:08
質問
多数の大きなテーブル(行と列)に対して、いくつかの結合を伴うクエリを持っていますが、テーブルの1つにデータの重複行があり、クエリで問題が発生します。これは他の部署からの読み取り専用のリアルタイム・フィードなので、そのデータを修正することはできませんが、私のクエリで問題が発生するのを防ごうとしています。
そこで、このゴミのようなデータを私の良いクエリに左結合で追加する必要があります。データセットは以下のようなものです。
IDNo FirstName LastName ...
-------------------------------------------
uqx bob smith
abc john willis
ABC john willis
aBc john willis
WTF jeff bridges
sss bill doe
ere sally abby
wtf jeff bridges
...
(約2ダース列、100K行)
最初の直感で、distinctを実行すると、約80K行が表示されました。
SELECT DISTINCT P.IDNo
FROM people P
しかし、以下を試すと、すべての行が戻ってきます。
SELECT DISTINCT P.*
FROM people P
または
SELECT
DISTINCT(P.IDNo) AS IDNoUnq
,P.FirstName
,P.LastName
...etc.
FROM people P
そこで、すべての列に対してFIRST()集計関数を実行しようと思ったのですが、これも間違っているような気がします。構文的に何か間違っているのでしょうか?
更新しました。 これらのレコードは、上記のIDの非キー/非インデックスフィールドに基づいて重複していることをお知らせしたいと思います。IDはテキストフィールドで、同じ値を持ちますが、問題の原因となっている他のデータとは異なるケースです。
解決方法は?
最初に重要な列だけを入れ子で選択し、そこから個別の選択を行って、「ユニーク」データのゴミ列が良いデータを破壊するのを防ぐ必要があることがわかりました。以下の方法で問題が解決したように見えますが、後で完全なデータセットで試してみるつもりです。
SELECT DISTINCT P2.*
FROM (
SELECT
IDNo
, FirstName
, LastName
FROM people P
) P2
リクエストにお応えして、プレイデータをご紹介します。 http://sqlfiddle.com/#!3/050e0d/3
CREATE TABLE people
(
[entry] int
, [IDNo] varchar(3)
, [FirstName] varchar(5)
, [LastName] varchar(7)
);
INSERT INTO people
(entry,[IDNo], [FirstName], [LastName])
VALUES
(1,'uqx', 'bob', 'smith'),
(2,'abc', 'john', 'willis'),
(3,'ABC', 'john', 'willis'),
(4,'aBc', 'john', 'willis'),
(5,'WTF', 'jeff', 'bridges'),
(6,'Sss', 'bill', 'doe'),
(7,'sSs', 'bill', 'doe'),
(8,'ssS', 'bill', 'doe'),
(9,'ere', 'sally', 'abby'),
(10,'wtf', 'jeff', 'bridges')
;
関連
-
[解決済み] nvarchar 値 ... をデータ型 int に変換する際に、変換に失敗しました。
-
[解決済み] ORA-00997: LONG データタイプの不正使用に対する回避策
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] SQL ServerにおけるLEFT JOINとLEFT OUTER JOINの比較
-
[解決済み] 各GROUP BYグループの最初の行を選択しますか?
-
[解決済み] SQL ServerでJOINを使用してUPDATE文を実行するにはどうすればよいですか?
-
[解決済み] JOINとINNER JOINの違いについて
-
[解決済み】「INNER JOIN」と「OUTER JOIN」の違いは何ですか?
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 列名または提供された値の数がテーブル定義と一致しない
-
[解決済み】CREATE VIEW は、バッチ内の唯一のステートメントでなければなりません。
-
[解決済み] varchar 値 'simple, ' をデータ型 int に変換する際に変換に失敗しました。
-
[解決済み】データベースへの「ネイティブ」SQL接続を使用するとはどういう意味ですか?
-
[解決済み】参照するテーブルにプライマリーキーやキャンディデートキーがない
-
[解決済み】Teradata - 計算中に数値のオーバーフローが発生しました。
-
[解決済み] データ型 varchar の変換エラー
-
[解決済み] SQL Server サブクエリが 1 つ以上の値を返しました。これは、サブクエリが =, !=, <, <= , >, >= のように続く場合は許可されません。
-
[解決済み] mongoの外部キー?
-
[解決済み] varchar 値の変換で int カラムがオーバーフローしました。