- ベストアンサー
重複クエリを使ったデータ削除
お尋ねします。 データをダブって入力してしまい、重複クエリを使ってダブったデータを抽出したのですが、ダブっているデータの片方だけを削除する方法がわかりません。 削除クエリにしてWhere条件式を書くのだろうと思いますがどう書けばいいのでしょうか? たとえば、日付、金額、入金(または出金)の3つのデータがダブっているクエリ抽出結果においては、各フィールドのWhere条件式にどう記述すればいいのでしょうか? 教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No.2のものです。 >「重複クエリで抽出されたデータ」は重複しているレコードだけですよね。それで>テーブルを作っても重複しているレコードだけになるのではないのですか? >ダブっていない、という意味を教えてください。 説明不足の点がありましたね。 重複クエリーの表示には二通りあるかと思います。 1.重複データが上下に並んで表示されているもの (特定の項目だけ重複チェックした場合) 2.最後のフィールドに重複データ数が表示されていて見かけ上は重複していないもの jetstreamさんの場合、データをダブって入力したということなので たぶん2.ではないかと思います。 (いや、1.だよと言う場合はそのクエリーをグループ化します。表示-集計) そのクエリーをコピーした後デザインで開き、クエリーを「テーブル作成クエリー」に 変え、実行(!ボタン)をクリックします。 作成したテーブルを見て下さい。重複していませんよね? それが確認できたら最初の重複クエリーで抽出したデータを 元のテーブルから削除します。 その後新しく作ったテーブルのデータを追加クエリーで投入します。 またわからなかったら聞いて下さい。 ※なかなかこういうのって文字だけじゃ伝わらないですよね・・ くれぐれも大事なデータだと思いますので コピーなどしてから試して下さいね。
その他の回答 (2)
- yuko6
- ベストアンサー率19% (108/543)
Accessだという前提ですが、すごく原始的な方法です。 条件式等の記述はいりません。クエリーだけでやります。 重複クエリーで抽出されたデータで一旦テーブルを作っちゃいます。 グループ化されているはずなので当然このテーブルの中はダブっていませんよね? 元のテーブルの重複データは全部削除しちゃいます。 その後先程作ったテーブルのデータを追加クエリーで追加します。 これではだめですか? 説明不足があれば言って下さい。
お使いのDBMSが何なのかわかりません(Jetですかね?)が、 WHERE句にサブクエリーを書けばよいのでは? 一例ですが、 WHERE Field Not In (SELECT DISTINCT ...... ) のような要領で。
補足
回答いただきありがとうございます。 私はいまAccess2000でDBを作っています。 基本的な質問ですみません。 1)サブクエリってなんですか? 2)例の式は削除クエリのWhere句に書くのですか? 式の意味がよくわかりません。すこし解説を頂けませんか? よろしくおねがいします!
補足
ありがとうございます。 そんな方法もあるんですね。 私、Access初心者なもんで、基本的なことをお聞きします。 「重複クエリで抽出されたデータ」は重複しているレコードだけですよね。それでテーブルを作っても重複しているレコードだけになるのではないのですか? ダブっていない、という意味を教えてください。