oracle 执行语句提示"不是 GROUP BY 表达式" 50积分重赏!!!50积分重赏!!!50积分重赏!!!急急急!!

Yuan_92 2019-10-12 10:22:29
SQL语句:delete from (select 1 from DRTEST_GRID,(select b.型号 as 型号,b.编号 as 编号,min(c.version) as version from (select 型号,编号,count(*) as count from DRTEST_GRID group by DRTEST_GRID.型号,DRTEST_GRID.编号 having count(*)>1)b,DRTEST_GRID cwhere b.型号=c.型号 and b.编号=c.编号 group by c.型号,c.编号)d where DRTEST_GRID.型号=d.型号 and DRTEST_GRID.编号=d.编号 and DRTEST_GRID.version=d.version )
请教大神们哪个地方错误,或者如何修改正确!!
50积分重赏!!!50积分重赏!!!50积分重赏!!!急急急!!
...全文
142 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yuan_92 2019-10-12
  • 打赏
  • 举报
回复
引用 1 楼 卖水果的net 的回复:
这个语句问题太多。

贴出表结构,说需求更好。


表结构:

需求:按照型号、编号分组。分组完,筛选出个数大于1的组别,最后删除min(version)最小的那个
例如:截图上,按型号、编号分完组,并且个数大于1的只有型号='MY2122-013-1204-A4080',编号='8'.分别对应的version为1,2.我要把1的这行删除。
感谢大神回复!!!
卖水果的net 2019-10-12
  • 打赏
  • 举报
回复
这个语句问题太多。 贴出表结构,说需求更好。
卖水果的net 2019-10-12
  • 打赏
  • 举报
回复
delete from mytable t where exists(select * from mytable where t.编号 = 编号 and t.型号 = 型号and version < t.version) -- 多测试两次,子查询中的条件,你再自己修改一下。
Yuan_92 2019-10-12
  • 打赏
  • 举报
回复
引用 3 楼 卖水果的net 的回复:
有三行重复的,是删除一行,还是删除两行?


重复的都删除。
卖水果的net 2019-10-12
  • 打赏
  • 举报
回复
有三行重复的,是删除一行,还是删除两行?

17,081

社区成员

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

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