- 締切済み
SQL文で
すみません。質問させてください。 A,B,C,D,Eと5個のフィールドで構成されたテーブルtableがあるとします。 tableにはデータがすべて格納され(NULLなし)ています。 ですが、フィールドA,C,DについてA,C,Dとも同じデータが格納される ことがあります。 その重複したデータ以外を取得したいのですが (要するにフィールドA,C,Dでユニークのデータのみ取得) SQL文でどのように書けばいいかわかりません。 よろしくお願いいたします
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- funamin
- ベストアンサー率0% (0/6)
下記例は、A,C,Dでユニークのデータのみを抽出します。 select A,C,D from table group by A,C,D having count(*) = 1 全ての項目を取得したい場合は select A,B,C,D,E from table where (A,C,D) in ( select A,C,D from table group by A,C,D having count(*) = 1 ) 上記でうまくいくと思います。
- TMINET
- ベストアンサー率32% (45/140)
SELECT A,B,C,D,E FROM table WHERE A != C AND C != D AND D != A; こういうことですか? 違ってたらゴメンナサイ。
- imogasi
- ベストアンサー率27% (4737/17069)
SELECT DISTINCT・・を使えれば使うことは確実でしょう。今回の例は3フィールドを合わせてDistinctで無いといけないわけですが、通常は1フィールドを考えていて、解説例もソンなのばかり。多分A+C+Dを合成した1フィールド(文字列)を自己で用意しないとだめかもしれない。SQLの処理系によると思うが、A&C&Dとか、「,」やANDは表現上許されないと思う。マニュアルをDistinctに絞って良く読むより手が無いでしょう。SQLは縦演算(レコード間関係)に弱いように思う。 バッチ処理なら、ソートして、SQLで無く、レコード処理して、前レコードのキー(A+C+D)と同じか聞いて 逐次処理をすれば良いだけのことですが、だめでしょうね。
- baha
- ベストアンサー率38% (16/42)
こんにちは。 DATABASEが何か不明なのですが、とりあえず ORACLEと推定して・・・ 重複行を取り除くのは、DISTINCTやGROUP BY句を 使用します。 あとは、マニュアル等で使い方を調べてください。 ご質問の意図が違っていれば補足してください。