
No.3ベストアンサー
- 回答日時:
>例えば、area,nameでソートして下記のような順番になったとして
>3個目以降に並んでいるレコードを削除したい
質問で提示された例が、良くないですね。
name(漢字データ)でのソートは文字コード順になるので、どれが削除されるか注意が必要ですけど、大丈夫ですか?
まず、特定の列でグループ化し、3件以上あった場合は2件だけ残し、それ以外は削除するために、各グループ内の行に、グループ内通番を付けることを考えます。
OracleやSQL Server 2005などでは、「row_number() over(~)」といった指定方法がありますが、MySQLは未サポートなので、ユーザ側で工夫する必要があります。
【グループ毎にグループ内データに通番を付けるSQL例】
select x.c1,x.c2,count(*) as rn
from t1 as x,t1 as y
where x.c1=y.c1 and x.c2>=y.c2
group by x.c1,x.c2
;
次にこの通番を利用し、通番が3以上のデータを削除することで実現できます。
【各グループにおいて、行が3件以上ある場合、2件だけ残すSQL例】
delete from w
using t1 as w,
(select x.c1,x.c2,count(*) as rn
from t1 as x,t1 as y
where x.c1=y.c1 and x.c2>=y.c2
group by x.c1,x.c2) as z
where w.c1=z.c1 and w.c2=z.c2 and rn>2
;
教えていただいた方法でできました!
こんなやり方があるんですね。
自分で考えても無理だったと思います。
助かりました。
不明瞭な質問をしたにも関わらず
丁寧にご回答いただきまして
どうもありがとうございました。
No.2
- 回答日時:
MySQLのバージョンも書いてください。
No.1
- 回答日時:
質問内容が、相当に不明瞭です。
>テーブルの中にareaが同一のものが2つしか必要ない時に
>不必要なレコードをDELETEしたい
どういう意味でしょうか?
示されたデータ例でいうと、area列の値で「北海道」が3行あるので、その内、1行を削除したいということですか?
>どのように処理をすれば良いのかわかりません
どの行を削除していいのか、その条件がまったく示されていないので、これでは誰も具体的な回答ができません。
何かユニークになるキーがあって、例えば、「古いもの(or 新しいもの)を2件残す」などの条件が分からなければ、アドバイスのしようがありません。
質問があいまいで申し訳ありませんでした。
>示されたデータ例でいうと、area列の値で「北海道」が3行あるので、その内、1行を削除したいということですか?
そうです。
例えば、area,nameでソートして下記のような順番になったとして3個目以降に並んでいるレコードを削除したいということです。
area name
北海道 佐々木 (残す)
北海道 佐藤 (残す)
北海道 山本 (削除)
青森 山田 (残す)
秋田 鈴木 (残す)
北海道だけでなく、他のareaに関しても同様に
3個以降を削除したいと考えています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
utf8bomとutf8mb4の違いがいま...
-
#1062 - '0' は索引 'PRIMARY' ...
-
MAMP 99ドル約1.6万円 高い...
-
初心者Mysqlの関数のsubstring...
-
同一日に複数レコードがある場...
-
あってますか?SQL
-
WHERE `年月日` = '晴' OR `年...
-
SQLを作ったのですがうまくいき...
-
(初心者)MySQLやmaraDBで、crea...
-
SQLです教えてくださいお願いし...
-
SQLです教えてください。
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
「総降水量が100mm以上になる...
-
SQLで漢字名称を都道府県や市区...
-
SQLあってますか?こう?
-
SQL構文です 画像のようにした...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
並べ替えについて
-
レコードの登録順がおかしい
-
1の行を固定した上でVBAを用い...
-
ファイルの漢数字の順番につい...
-
テーブルレーコードをソートし...
-
SQLデータベースの処理
-
ハイフンの入ったデータの並べ替え
-
月末日のみソートしたい
-
Excelのオートフィルタでソート...
-
タイトル行を固定してソートしたい
-
リストボックス内を昇順並べる方法
-
エクセル、並び替え正しくソー...
-
accessでDISTINCT 句と矛盾
-
SQLで曜日のソートを月火水木金...
-
ファイルメーカーでソート後の...
-
OracleとAccessの出力順の違い
-
アクセスに関して。クエリの並...
-
Selectした時のレコードの取得順
-
上から何番目か。
-
コンボボックスのソートについて
おすすめ情報