- 締切済み
IDの重複を調べたい
データベースからデータを取り出すのに以下のような処理をしたいんですが、どうすればいいのかわかりません。 1.idの重複しているものを取り出す 2.重複しているデータのうち、条件が真の分だけ取り出す 使用言語はJavaです。 SQLでどこまで処理ができるのかわからないため、データの扱い方がわからないでいます。 わかる方いましたら、よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>2.重複しているデータのうち、条件が真の分だけ取り出す と、 >その他の年であれば0を返したいんです。 なんか言われていることが違うんですが(^^;;; idが重複しているレコードのうち、年度が2003のもののみを取り出すのであれば次のSQLになります。 select * from テーブル名 where 年度 = '2003' and id in (select id from テーブル名 group by id having count(id) > 1)
- GuruGuru22
- ベストアンサー率51% (177/346)
最近、Java + MySQLって事例増えてますねぇ。 >2.重複しているデータのうち、条件が真の分だけ取り出す と >条件はidともう一つ主キー(年度)を持っていて、 >その主キーが今年であれば年を返して(2003)、 >その他の年であれば0を返したいんです。 これって矛盾してませんか。 前者は普通のselect文で可能ですよね。 後者の場合、全Dataに対して処理をするように受け取れるのですが。 この場合、テーブルをコピーして、更新すればよい感じがしますが。
お礼
ありがとうございました。 代理質問のため、矛盾している点がありますが、後者の方が正しいです。 重複しているデータかつ、今年であれば年を返して、それ以外の年であれば0を返したいそうです。 結局、重複データを取り出す以降はJavaで処理するようにしました。
- taka_tetsu
- ベストアンサー率65% (1020/1553)
1. select id from テーブル名 group by id having count(id) > 1 でidは取れます。 2. 条件って何ですか? こういう質問であればDBの種類を書いた方がいいですよ。
お礼
ありがとうございます。 条件はidともう一つ主キー(年度)を持っていて、その主キーが今年であれば年を返して(2003)、その他の年であれば0を返したいんです。 ちなみにDBはMySQLを使用しています。
お礼
ありがとうございます。 #2さんのお礼にも書いたように、代理質問のため矛盾している点がありました。 重複データのみをSQLで取り出して、後の処理はJavaで行うことになりました。