- - PR -
GROUP BYでいいのでしょうか?
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2005-01-14 20:05
はじめまして、もみじと申します。
ただいまSQLの勉強中なんですが、 ちょっとつまずいてしまい投稿しました。 使用しているのはACCESS 2000です。 以下のようなテーブルがあります。 ------------- ID| X | Y | ------------- 1 | 1 | 1 | 2 | 1 | 1 | 3 | 1 | 2 | 4 | 2 | 1 | 5 | 2 | 2 | 6 | 3 | 1 | 7 | 3 | 2 | 8 | 3 | 2 | 9 | 3 | 3 | ------------- X列とY列の値が重複しているものを取り除いて 結果が欲しいのですがやり方がわかりません。 求めたい結果 ------------- ID| X | Y | ------------- 1 | 1 | 1 | 3 | 1 | 2 | 4 | 2 | 1 | 5 | 2 | 2 | 6 | 3 | 1 | 7 | 3 | 2 | 9 | 3 | 3 | ------------- SELECT X,Y FROM テーブル名 GROUP BY X,Y とするとX列とY列で重複していない物を取得出来 ますがこの場合ID列が取得出来ません。 ------------- X | Y | ------------- 1 | 1 | 1 | 2 | 2 | 1 | 2 | 2 | 3 | 1 | 3 | 2 | 3 | 3 | ------------- SELECT ID,X,Y FROM テーブル名 GROUP BY ID,X,Y とするとID列は取得出来ますがIDは一意な値なので 全行取得してしまいます。 ------------- ID| X | Y | ------------- 1 | 1 | 1 | 2 | 1 | 1 | 3 | 1 | 2 | 4 | 2 | 1 | 5 | 2 | 2 | 6 | 3 | 1 | 7 | 3 | 2 | 8 | 3 | 2 | 9 | 3 | 3 | ------------- SELECT ID,X,Y FROM テーブル名 GROUP BY X,Y とするとエラーになってしまいます。 GROUP BYを使うこと自体間違っているのでしょうか? 他に方法があるのでしょうか? | ||||
|
投稿日時: 2005-01-14 20:25
SELECT min(ID),X,Y FROM テーブル名 GROUP BY X,Y
だといかがでしょう? | ||||
|
投稿日時: 2005-01-17 10:40
単純に GROUP BYをしないで、
WHERE句に X <> Y をつけたらいかがでしょう? | ||||
|
投稿日時: 2005-01-17 13:54
すなめり様、
ありがとうございます。 ご教授頂いた方法でデータ を取得することが出来ました。 | ||||
|
投稿日時: 2005-01-17 14:08
夏椰様、
ありがとうございます。 この際、色々な方法を 覚えたいのです。 単純にWHERE句でx<>yとすると xとyが異なるものを取得 してしまうのでID=1やID=9 といった必要な行が取得出来ま せんでした。 私の説明が下手だったらすいません。 「X列とY列の値が重複」とは X列とY列をひとまとまりの物としてみる感じです。 この場合ID=1の行とID=2の行はX列とY列の 値が同じになっているのでそれを取り除いて どちらか一方の行のデータが欲しかったという ことです。 | ||||
|
投稿日時: 2005-01-17 15:15
MySQL 環境ですが、
select distinct(ID), X, Y from TABLE group by ID; | ||||
|
投稿日時: 2005-01-17 16:14
もろ勘違いしました。失礼しました。 で、いろいろな方法を学びたいとの事なので、 Group Byを使わない方法を考えてみました。 SELECT TABLE_1.id, TABLE.x, TABLE_1.y FROM TABLEAS TABLE_1 where TABLE_1.x & TABLE_1.y not in ( select TABLE.x & TABLE.y from TABLE where TABLE.id < TABLE_1.id ) ; こんなんはいかがでしょう? | ||||
1
