新生活を充実させるための「こだわり」を取材!!

私は仕事上でデータベースを扱っていて、タイトルのような処理を行う必要があるのですが、いかんせん方法がわからずネット上を検索しても同様だったためここで質問させていただきます。

質問点を簡単に説明いたしますと、
たとえばAというテーブルがあって、

項目名1 項目名2 項目名3 項目名4
 A    あ    ア    亜
 A    い    ア    以
 A    う    ア    宇
 B    え    イ    江
 B    お    イ    尾

上のような構造になっている場合に「項目名1」について重複している項目を排除し、結果として


項目名1 項目名2 項目名3 項目名4
 A    あ    ア    亜
 B    え    イ    江

上のようなデータを取得したいのです。
この時に、Aの重複を排除して取得するレコードは1~3行目のどれでもよいです。
また、データを取得する際には必ずそのレコードの「全項目」を取得したいのでDistinctはうまく使えませんでした。

どなたか詳しい方、方法を教えてくださると幸いです。回答お待ちしております。

教えて!goo グレード

A 回答 (4件)

比較可能で一意性のある値をもてる項目6をテーブルに追加して、



select T.* from T, (select Item1,min(Item6) as Item6 from T group by item1) W where T.item6=W.item6;

――ってやるのが、一番手っ取り早いと思います。
他のところに影響がでないのであればですが。
oracleならrowidを使うとか、レコードの更新時刻を突っ込むとか。
    • good
    • 18

Oracleだったらこれでもありかと。



select 項目1, 項目2, 項目3, 項目 from テーブル名 where rowid =
(select min(rowid) from テーブル名 group by 項目1)
    • good
    • 20

SELECT


項目名1,
Min(項目名2) AS Alias,
項目名3,
項目名4
FROM
テーブル
GROUP BY
項目名1,
項目名3,
項目名4
 

この回答への補足

ご回答ありがとうございます。
教えていただいたSQL文についてですが、土日は会社が休みなため月曜日あたりに試してみたいと思います。

ところで、そのSQL文ではSelect文で項目名2に対してMin()を利用して1つの行を選択していますよね。
疑問なのですが、何故項目名1の重複を排除したいのに項目名2に対して条件を設定しているのでしょうか?

また、質問の補足ですが、
項目名1と同様に項目名2~4にも重複する値が存在することがあります(一意でない)。

引き続き回答よろしくお願いいたします。

補足日時:2003/08/23 11:51
    • good
    • 7

うむむ…。

エクセルを使うことはだめなのでしょうか?SQLのみで?
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
仕事の都合上、リアルタイムでデータベースを操作するSQLを書かねばならないのでエクセルを使うことはできません(^^;
せっかくのご意見ですが申し訳ありません。

お礼日時:2003/08/23 11:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング