![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
お世話になります。Oracle9iで、
タイトル通りですが、一つの表から
重複したレコード・重複していないレコード
を出力したいのですが、「こうかな?」と思った
SELECT文が30分ちかく返ってきません(^^;
他に方法があれば教えて頂きたく質問致しました。
よろしくご教授下さい!
(以下のSQLで、重複した行は"exists"で、
重複していない行は"not exists"もしくは
"having count(*) = 1"でできるかな?
と思ってましたが・・・)
テーブル名:結果
キー項目(とみなすカラム):番号・名称・年月日
出力したい項目:結果.データ・もしくは結果.*
--データが複数
select a.番号,a.名称,a.年月日,a.データ
from 結果 a
where exists
--キーの重複SELECT
(
select 番号,名称,年月日,count(*)
from 結果 j
where j.年月日 >= '1992/04/01'
and j.年月日 <= '1993/03/31'
and a.番号= j.番号
and a.名称= j.名称
and a.年月日 = j.年月日
group by j.番号,j.名称,j.年月日
having count(*) > 1
)
No.1ベストアンサー
- 回答日時:
キー項目とは、主キーとは違うようですね。
30分もかかるのは、SQLのせいではなさそうです。・キー項目にインデックスを貼る。
・データが多いようならアナライズ。
を試してみてください。
sqlで直すなら、以下の点ぐらいです。
select 番号,名称,年月日,count(*)
↓
select 1
existsは、存在するかどうかなので、カラムをselectする必要はありません。
(たぶんオプティマイザが何とかしてくれてると思います^^;
早々にご回答ありがとうございます。
ご指摘通りインデックスを作成してリトライしましたが、返ってきませんでした(^^;
対処方(逃げ!?)として、
重複レコードを出力するビュー、
重複していないレコードを出力するビューを作成することにしました。
今回は納期が迫っているため、上記方法で対処しますが、
今度時間がある時に、原因突き止めたいと思います。
ご教授ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- Oracle sqlで質問です。 Aテーブルの登録番号をキーにBテーブルから確認番号を取得したいのですが、Bテーブ 4 2023/05/18 13:08
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「名前(first name) 1 2023/06/24 13:03
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
単一グループのグループ関数で...
-
【PL/SQL】FROM区に変数を使う方法
-
トランザクションログを出力せ...
-
SQL*Loader Append
-
group byの並び順を変えるだけ...
-
updateで複数行更新したい
-
AccessのSQL文で1件のみヒット...
-
アクセスのレポートでレコード...
-
データ
-
SELECT FOR UPDATE で該当レコ...
-
where句中のtrim関数について
-
グループ関数の結果について
-
「数字で始まらない」ものを抽...
-
レコードの更新履歴について
-
値が入っていない日付型の項目...
-
負荷試験の後重くなります。。。
-
1レコード全てを改行なしで表...
-
引数によってwhere句を切り替え...
-
MERGE文について
-
ACCESS レコードの並び順について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
単一グループのグループ関数で...
-
【PL/SQL】FROM区に変数を使う方法
-
AccessのSQL文で1件のみヒット...
-
SELECT FOR UPDATE で該当レコ...
-
where句中のtrim関数について
-
group byの並び順を変えるだけ...
-
アクセスのレポートでレコード...
-
SQLで条件にヒットしたレコード...
-
ORMについて
-
トランザクションログを出力せ...
-
データ
-
SQL*Loader Append
-
「数字で始まらない」ものを抽...
-
引数によってwhere句を切り替え...
-
BLOB型項目をSQLの検索条件に指...
-
osqleditについて
-
ACCESS レコードの並び順について
-
大量レコードをTRUNCATEせずに...
-
【SQL】違うフィールド同士の集...
-
updateで複数行更新したい
おすすめ情報