問合せ:ここはどうすれば重複したレコードを削除するには
Select table_c.id_number, table_c.name, table_s.site_name,table_co.Contract_name
FROM table_c , table_s, table_m, table_o, table_a, table_con
WHERE
table_s.objid = table_c.sobjid
AND table_m.cobjid (+) = table_c.objid
AND table_o.objid (+) = table_m.olobjid
AND table_a.objid (+) = table_o.aobjid
AND table_co.objid (+) = table_a.conobjid;
私は6つのテーブルを持っています。 table_cとtable_sは1つの2つの1つの関係を持っています。 1つのtable_oレコードに対して、2つのtable_cレコードを持つことができますが、レコードがない可能性もあります.SELECTでtable_cとtable_sテーブルのtable_co値を取る必要があるため、すべてのテーブルに対してleft out joinを使用しました。table_c-> table_m- > table_o-> table_a-> table_co。
このクエリを実行すると、重複したレコードが表示されます。私はtable_cに何百万ものレコードを持っているので、重複したレコードを削除するために別名またはユニオンALLを使用すると、クエリに非常に時間がかかり、これは受け入れられない解決方法です。
このクエリは、パフォーマンスの問題がなく独自のレコードを提供できるようにすることができます。
このクエリは、外部システムによってデータを取得するために使用されるSQLビューの一部です。
ありがとうございます。
明示的な結合構文を使用してクエリを書き換えてください。 –
私はtim join構文に同意すると、あなたの関係がはっきりしないのでトラブルシューティングが簡単になります。 http://www.w3schools.com/sql/sql_join_inner.aspは、新しい概念である場合の内部結合の記事です。私がすぐに見る1つの問題は、他のテーブルとtable_sの関係が定義されていないということです。これは、クロス結合を作成し、おそらくパフォーマンス別のグループまたはグループが貧弱な重複を返す可能性があることを意味します。 – Matt
こんにちは@マット/ @ティム、私はまた、明示的な結合(内部/左外部結合)を使用して、クエリを書き換えるための提案に同意します。もう一つのポイントは、table_sはtable_cとone2oneの関係を持ち、table_cがこのクエリの先頭のテーブルであるため、table_sが重複レコードの理由ではないとは思わない。ありがとう- – HelloFriends