• 締切済み

IDの重複を調べたい

データベースからデータを取り出すのに以下のような処理をしたいんですが、どうすればいいのかわかりません。 1.idの重複しているものを取り出す 2.重複しているデータのうち、条件が真の分だけ取り出す 使用言語はJavaです。 SQLでどこまで処理ができるのかわからないため、データの扱い方がわからないでいます。 わかる方いましたら、よろしくお願いします。

みんなの回答

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

>2.重複しているデータのうち、条件が真の分だけ取り出す と、 >その他の年であれば0を返したいんです。 なんか言われていることが違うんですが(^^;;; idが重複しているレコードのうち、年度が2003のもののみを取り出すのであれば次のSQLになります。 select * from テーブル名 where 年度 = '2003' and id in (select id from テーブル名 group by id having count(id) > 1)

nana_ko
質問者

お礼

ありがとうございます。 #2さんのお礼にも書いたように、代理質問のため矛盾している点がありました。 重複データのみをSQLで取り出して、後の処理はJavaで行うことになりました。

回答No.2

最近、Java + MySQLって事例増えてますねぇ。 >2.重複しているデータのうち、条件が真の分だけ取り出す と >条件はidともう一つ主キー(年度)を持っていて、 >その主キーが今年であれば年を返して(2003)、 >その他の年であれば0を返したいんです。 これって矛盾してませんか。 前者は普通のselect文で可能ですよね。 後者の場合、全Dataに対して処理をするように受け取れるのですが。 この場合、テーブルをコピーして、更新すればよい感じがしますが。

nana_ko
質問者

お礼

ありがとうございました。 代理質問のため、矛盾している点がありますが、後者の方が正しいです。 重複しているデータかつ、今年であれば年を返して、それ以外の年であれば0を返したいそうです。 結局、重複データを取り出す以降はJavaで処理するようにしました。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

1. select id from テーブル名 group by id having count(id) > 1 でidは取れます。 2. 条件って何ですか? こういう質問であればDBの種類を書いた方がいいですよ。

nana_ko
質問者

お礼

ありがとうございます。 条件はidともう一つ主キー(年度)を持っていて、その主キーが今年であれば年を返して(2003)、その他の年であれば0を返したいんです。 ちなみにDBはMySQLを使用しています。

関連するQ&A