以下のテーブルがあります。(キー梨、一行目が列名、二行目以降がデータ)
id_goods nm_goods price
01 みかん 200
01 みかん 150
01 みかん 100
02 りんご 100
03 チョコ 120
このうち、id_goodsが重複するデータがあった場合priceが最大のもの以外を削除したいのですが
どのようなSQLが正解でしょうか。
以下を試しましたがダメでした
delete t1 from tbl_goods t1 inner join
(select id_goods as obj_id,max(price) as obj_price from tbl_goods
group by id_goods
having count(id_goods) > 1) s1
on t1.id_goods = s1.obj_id
and t1.price <> s1.obj_price
オラクルです。
夜分にすみませんがご教授お願いいたします。
SHOW CREATE TABLE LIKE 'tbl_goods' で得られるテーブル定義を追記してください。実際に実行して動作確認したものを回答できますので。
ありがとうございます。
ご教示いただいたSQLが通りませんでした。
自宅でSQLの学習用に使用している
Oracle Application Expressというものの中のSQLワークショップです。
DDLは
create table tbl_goods
(id_goods char(1)
,nm_goods varchar2(60)
,price number(6,0)
)
です。
あら、Oracleなんですね。こちらに環境がないので、動作確認できませんね。
すみません。id_goods char(2)です。
タグに Oracle を追加しておきましょう。
回答4件
あなたの回答
tips
プレビュー