SQLで重複する列データがある場合、最新有無を確認し、最新のものだけを抽出したいです。
実行したいSQLは、下記のようなテーブル「card」に対して、
テーブル名:card (※最新・・・該当番号の更新があった場合は1になる)
| 顧客番号 | 番号 | 最新 |
|---|---|---|
| 1 | 12341111 | 0 |
| 1 | 12341111 | 0 |
| 1 | 12341111 | 1 |
| 1 | 12342222 | 0 |
| 1 | 12343333 | 0 |
| 2 | 12344444 | 0 |
| 3 | 12345555 | 0 |
| 3 | 12345555 | 1 |
重複する番号がある場合、最新のデータのみ抽出したいです。
以下が、SQLを実行して抽出したいデータです。
| 顧客番号 | 番号 | 最新 |
|---|---|---|
| 1 | 12341111 | 1 |
| 1 | 12342222 | 0 |
| 1 | 12343333 | 0 |
| 2 | 12344444 | 0 |
| 3 | 12345555 | 1 |
恐れ入りますが、よろしくお願いします。
更新有無というのは最新という扱いでは無いのですね。
であれば、複数の更新がある状態で最新とするための条件は何ですか?
単に重複しないようにという事ならgroup by とかdistinct とかだけでいいのですが。
コメントありがとうございます。
一意の番号に対して、1のフラグが立つのは一つだけになります。
ですので、更新=最新と思っていただいて構いません。
同じ番号が後で追加された場合、もともと存在した番号は0のまま、新たに追加された番号が1になります。同じ番号が後で追加されていない場合、番号は0のままです。ですので、重複しない場合は0でも最新となります。
ご不明な点がございましたら仰ってください!
最新でないものを0には出来ないのですか?
要は、1件の場合には1のデータしかない状態に。
可能であれば、このデータ構造のまま抽出したいです。
もし難しい場合、重複しないデータを1にして抽出する方法もご教授いただけますと幸いです。
恐れ入りますが、よろしくお願いします。
それから、DBMSは何ですか?MySQL?タグに追加して下さい。
SQL serverを追加しました。
書いてある条件だけだと、平構文で書けちゃうんですけど?
あと card のプライマリキーは?
回答3件
あなたの回答
tips
プレビュー