質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

4回答

5407閲覧

union allで重複キーが生じているため解決したい

me150620

me150620

総合スコア6

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2019/07/28 07:20

SQLのunion allで重複キーを解決したい

Oracle DBで、SQLでデータを取ってきています。
その際、union allを使用して2つのクエリを結合し、処理を軽くしています。
おおむねのデータは取得出来ていますが、一部のデータが
「重複キーのため取得不可」となっています。

これらの重複キーとなっているデータをうまく取得できる方法はありませんか?
(できればunion allのままで)

発生している問題

重複キーのため一部データが取得不可

該当のソースコード

試したこと

重複キーとなっている物のみで別テーブルを作成しようとしたが、技術不足により断念

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2019/07/28 10:41

union すると重複するのですか? 重複しているもので残すものの条件は?
KOZ6.0

2019/07/29 06:22

>>おおむねのデータは取得出来ていますが、一部のデータが >>「重複キーのため取得不可」となっています。 これってどういう状態なんでしょう。 ORA-01427 でも発生している? エラーが発生しているならメッセージの明記をお願いします。
guest

回答4

0

SELECT しているのがPRIMARY KEY or ユニークキーだけでしたら、UNION ALL → UNION にすると同じ値が複数行あれば1行にできます。

現象を再現できる最低限のカラムでいいですから、質問にCREATE TABLE、数件のINSERT と現行のSELECT文を提示した方が適切なコメントが付きやすいかと。

投稿2019/07/28 08:40

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

SQL が明示されていないので、イメージですが

SELECT ~ WHERE 条件A
UNION ALL
SELECT ~ WHERE 条件B

のような感じであれば、片方からもう一方を除く方法が考えられます。

SELECT ~ WHERE 条件A AND NOT (条件B)
UNION ALL
SELECT ~ WHERE 条件B

使用しているテーブルが同じで条件のみ違うなら USE_CONCAT ヒントを使用して

SELECT /*+ USE_CONCAT / A. FROM A WHERE (条件A) OR (条件B)

のようにすると速度改善が期待できます。(改善できたらラッキー程度ですが)

UNION は検索結果が少量なら良いですが、重複チェックが走るので、件数が多くなると速度低下します。

投稿2019/07/29 02:29

KOZ6.0

総合スコア2626

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

union allを使用して2つのクエリを結合し、処理を軽く

ほんとに処理が軽くなるかちょっと疑問ですが
処理Aと処理Bの間で同一データが発生してユニークに値が取れないなら
それそれのselectに適当なダミーカラムをつけて処理すればよいのでは?

あとは具体的なデータがないと回答しようがありませんが

投稿2019/07/29 01:12

yambejp

総合スコア114829

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

投稿2019/07/28 08:49

hentaiman

総合スコア6417

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問