去重复报ORA-00913: too many values 。。。

l_dongdong 2010-04-13 04:24:12

--DELETE PRICE_INFO_TBL

select * from PRICE_INFO_TBL
WHERE (PROD_SID,PRICE_BOOK_SID,CREATOR) IN
(
select PROD_SID,PRICE_BOOK_SID,CREATOR,count(*) from PRICE_INFO_TBL group by PROD_SID,PRICE_BOOK_SID,PROJECT_SID,CREATOR having count(*) >1
and PROJECT_SID = 10 and PRICE_BOOK_SID = 33 and CREATOR LIKE '0005546904%'
) AND ROWID NOT IN (
SELECT MIN(ROWID) FROM PRICE_INFO_TBL GROUP BY PROD_SID,PRICE_BOOK_SID,PROJECT_SID,CREATOR HAVING COUNT(*) > 1 and PROJECT_SID = 10
and PRICE_BOOK_SID = 33 and CREATOR LIKE '0005546904%'
)

请问为什么会报
ORA-00913: too many values 错误呢

我想删除 表 PRICE_INFO_TBL

PRICE_BOOK_SID = 33 CREATOR 和LIKE '0005546904%'的 筛选结果 并且


PROD_SID,PRICE_BOOK_SID,CREATOR 这三个字段重复的记录



谢谢!@
...全文
575 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
l_dongdong 2010-04-13
  • 打赏
  • 举报
回复
谢谢老兵,你回答的真快,我按照你的回复去处理,没问题。。谢谢!

mingking 的回答 我需要好好研究理解 把我的sq优化了 感谢!嘿嘿
mingking76 2010-04-13
  • 打赏
  • 举报
回复

--DELETE PRICE_INFO_TBL

select * from PRICE_INFO_TBL a where rowid not in (select min(ROWID) from PRICE_INFO_TBL b where a.PROD_SID = b.PROD_SID and a.PRICE_BOOK_SID=b.PRICE_BOOK_SID and a.CREATOR = b.CREATOR) and
a.PRICE_BOOK_SID = 33 and a.CREATOR LIKE '0005546904%'
tangren 2010-04-13
  • 打赏
  • 举报
回复
下面两处红色部分,也就是in的列数要对应,一样多,可以把count(*)去掉
select * from PRICE_INFO_TBL
WHERE (PROD_SID,PRICE_BOOK_SID,CREATOR) IN
(
select PROD_SID,PRICE_BOOK_SID,CREATOR,count(*) from PRICE_INFO_TBL group by PROD_SID,PRICE_BOOK_SID,PROJECT_SID,CREATOR having count(*) >1
and PROJECT_SID = 10 and PRICE_BOOK_SID = 33 and CREATOR LIKE '0005546904%'
) AND ROWID NOT IN (
SELECT MIN(ROWID) FROM PRICE_INFO_TBL GROUP BY PROD_SID,PRICE_BOOK_SID,PROJECT_SID,CREATOR HAVING COUNT(*) > 1 and PROJECT_SID = 10
and PRICE_BOOK_SID = 33 and CREATOR LIKE '0005546904%'
)

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧