• ベストアンサー

Access 重複している件を抜き出す

sunlight21の回答

回答No.2

同じデータというのは全てが同じデータでしょうか? それとも何かの項目が同じデータでしょうか? 何かの項目なら以下のSQL実行したら取得できると思います。 と、Oracleで実行したんで何ともいえませんが・・・。 例)姓名が同じ人のデータを取得 SELECT * FROM M_USER WHERE (SEI, NAME) IN (SELECT SEI ,NAME FROM M_USER GROUP BY SEI ,NAME HAVING COUNT(*) > 1) そして、効率は悪いかもです。。。

-Jelly-
質問者

お礼

メインクエリのFROM句の予約語Existsを使用しないフィールドを 複数返すサブクエリを作成しました。 サブクエリのSelectステートメントを変更し、 1つのフィールドだけを指定してください。 テーブル中のとある幾つかの項目が同じ件を抜き出したかったです。 これはOracleでやれってことでしょうか(笑 確かにオブジェクトブラウザーとかだとSQLべた書き出来て楽なんですけど いかんせお手軽コンパクトローカル完結なAccess歴が長いもので Oracleをひょいひょい起動する気にならんのです==; (ってかまだ使い慣れてないだけか) SQL文だけ見た感じ、これで出来たら楽そうですね。 まだまだ勉強不足です。ありがとうございました。

関連するQ&A

  • accessで重複データの削除について

    accessというよりSQLについてなのかと思いますが、教えていただけないでしょうか。 重複するIDがあり、1件を除いて他のデータを削除してデータを抽出したいです。 抽出条件としては、[年月日]カラムがあるため、日付が一番直近のものを残したいです。  ※こちらも重複しております。 また、[フィルタ]カラムが「2」のレコードのみを対象としたいと思っています。 accessの場合、重複クエリを用いるのかと思い、クエリウィザードから作成しましたが 一意とはなりませんでした。 SELECT テーブル1.[共通ID], テーブル1.[連番], テーブル1.[郵便番号], テーブル1.[住所], テーブル1.[担当者名], テーブル1.[年月日], テーブル1.[フィルタ] FROM テーブル1 WHERE (((テーブル1.[共通ID]) In (SELECT [共通ID] FROM [テーブル1] As Tmp GROUP BY [共通ID] HAVING Count(*)>1 )) AND ((テーブル1.[フィルタ])=2)) ORDER BY テーブル1.[共通ID], テーブル1.[年月日] DESC; distinctも使ってみましたがうまくできませんでした。 何が原因でしょうか。 申し訳ありませんがご教示いただきたくお願いいたします。

  • 結合した場合の取得時間差について

    ちょっと抽象的ですいませんが、 100万件のデータがあるテーブルAからインデックスを利用して1万件のデータを取得する場合と、 80万件のデータがあるテーブルAと1000件のデータがあるテーブルBを結合して、インデックスを利用して1万件のデータを取得する(WHERE区の>=,<=とGROUP BYを使用) 場合だと明らかに前者の方が速いとは思いますが、実際の取得時間の差はどれくらいあるでしょうか? 何を教えてもらいたいかと言うと、上記の場合、テーブルAの80万件は別テーブルのデータから作られており、残りの20万件はテーブルAとテーブルBから作ることができるので(80万件をあるKEYでSUMしたもの)、 2つの方法でのデータ取得の差があまりない、あるいはかなり小さくできるのなら、後者の方法を取りたいのです。 (INSERT,UPDATEを無駄にしたくない) 説明がわかりづらくてすいませんが、アドバイスをお願いします。

  • 重複項目を取得するSQL分

    SQL分でわからないことがあるので質問させてください。 Aというテーブルに、 番号と処理通番(ユニーク)の2つカラムがあります。 Aテーブルから重複した番号とその処理通番を 上から4件まで取得したいのですが、 ----------------------------- SELECT A.番号,A.処理通番 FROM A INNER JOIN (SELECT 番号 FROM A GROUP BY 番号 HAVING COUNT(*) > 1) AS B ON (A.番号 = B.番号) ORDER BY A.番号,A.処理通番 ----------------------------- のSQLでは重複した番号のデータを 全て取得してしまいます。 番号別に4件まで取得したいのですが、 どのようなSQLを書けば取得できますか? よろしくお願いします。

  • 10万件のデータに対してチェックを行う。

    こんにちは。Access 2003を使用しています。Accessのテーブルには10万件程度のデータがはいっています。 Excelを開き、1行目から順に読み取って、テーブルにインサート・アップデートをしていきます。 例えば、Excel A列にIDがあったとします。AccessのテーブルにそのIDがなければ、インサート、あればアップデートという仕組みにしています。 データ件数が増えてきて、今は10万件に対し、8万件がアップデートの対象です。処理が終わるのに物凄く時間がかかります。 何かよいアイディアはないでしょうか?例えば、こういった技術を使えばいいとか、こっちの技術を勉強して乗り換えたほうがいいよとかです。よろしくお願いします。

  • accessとオラクルの連携について

    お世話になります。アクセスでテーブルのデータをSQL文で取得し、 そのデータをオラクルのテーブルにinsertしたいと思ってます。 ただ、フィールドの数が40個もあるので insert into ・・・・Fields(0),Fields(1)・・・・ と記述するのはかなり面倒なので何かいい方法はないでしょうか よろしくお願いします。 なお、access側とオラクル側のテーブルは同じ型です。 ’ローカルテーブルのデータを取得 rec.Open "select * from tesuto", cnn ’取得したデータをinsertする Do Until rec.EOF sql= insert into value(Fields(0),Fields(1),・・・ rec1.Open "select * from tesuto1", cnn1 Loop

  • ○件目~△件目のみ抽出したい

    はじめて教えてgooを利用させていただきます。 質問ですが、たとえば、 SELECT 項目1, 項目2, 項目3 FROM テーブルA WHERE 項目1 = 1 ORDER BY 項目2 の結果セットの内、上から30件目~60件目だけ欲しいのですが、 どう記述すればいいのか悩んでいます。 いい方法があれば教えてください。

  • Access97のクエリーでのDISTINCTROW について

    Access97のクエリーでのDISTINCTROWの解読の仕方がわからず困っています。 SELECT DISTINCTROW テーブル1.番号, テーブル1.D名, テーブル1.E名, FROM テーブル1 WHERE (((テーブル1.番号) In (SELECT [番号] FROM [テーブル1] As Tmp GROUP BY [番号] HAVING Count(*)>1 ))) ORDER BY テーブル1.番号; このSQL文はどういう条件のデータを選択する意味なのでしょうか。 教えてください。

  • 重複レコードから一件を取り出したいのですが

    ID int(10) UNSIGNED STAFF int(10) UNSIGNED SUBJECT varchar(128) MSG text RCV datetime と言うテーブルがあります。スタッフは外部キーで、複数のレコードに同一のスタッフが存在します。 このテーブルから、スタッフでGROUP BYしてRCVが直近のものを取り出すSQLはどう書けば宜しいでしょうか? 宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • 取出す順番

    selectで取出したときのデータのならびについてですが、 order byやgroup byをしなければ、 テーブルに書き込んだ順番が保障されるものでしょうか? MySQLのバージョンは 4.1.10です。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • SELECTで1件のみ取得するには?

    こんにちわ。 いまORACLE9iを使用している者です。 ACCESSでは SELECT TOP 1 項目名 FROM テーブル名 ORDER BY 項目名; で並べ替えたデータ群のうち,先頭の1件だけを 取ることができますが, ORACLEでそのような機能(SQL)はあるでしょうか? 教えてください。 よろしくお願いします。