急!!求SQL

jianglili130 2011-06-23 03:33:43
表A:

ID CLASS NEW
111 a 1
111 b 2
111 c 3
222 a 1
222 b 2
222 c 3
222 d 4
222 e 5
333 a 1
333 b 2
333 c 3
333 d 4


期望结果:

ID CLASS NEW
111 a 3
111 b 2
111 c 1
222 a 5
222 b 4
222 c 3
222 d 2
222 e 1
333 a 4
333 b 3
333 c 2
333 d 1
...全文
265 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
nightingale_e 2011-06-24
  • 打赏
  • 举报
回复
8楼 的漂亮 。。。
Eileen0124 2011-06-23
  • 打赏
  • 举报
回复
按8楼的把select出来的数据插入临时表 然后把原表delete,在把临时表的数据插入原表
jianglili130 2011-06-23
  • 打赏
  • 举报
回复
更新
UPDATE
hudingchen 2011-06-23
  • 打赏
  • 举报
回复
你要更新还是要检索呢?
SQL> with table_a as
2 (
3 select '111' ID ,'a' class ,'1' new from dual
4 union
5 select '111' ID ,'b' class ,'3' new from dual
6 union
7 select '111' ID ,'c' class ,'5' new from dual
8 union
9 select '222' ID ,'a' class ,'1' new from dual
10 union
11 select '222' ID ,'b' class ,'2' new from dual
12 union
13 select '222' ID ,'c' class ,'3' new from dual
14 union
15 select '222' ID ,'d' class ,'5' new from dual
16 )
17 SELECT t1.ID,
18 t1.CLASS,
19 t2.NEW
20 FROM (SELECT t.*,
21 row_number() OVER(PARTITION BY t.ID ORDER BY t.NEW) cnt
22 FROM table_a t) t1
23 INNER JOIN (SELECT t.ID,
24 t.NEW,
25 row_number() OVER(PARTITION BY t.ID ORDER BY t.NEW DESC) cnt
26 FROM table_a t) t2 ON t1.ID = t2.ID
27 AND t1.cnt = t2.cnt;

ID CL NE
------ -- --
111 a 5
111 b 3
111 c 1
222 a 5
222 b 3
222 c 2
222 d 1
horizonlyhw 2011-06-23
  • 打赏
  • 举报
回复
把你查询出来的这个当作一个表 然后按照id和class作为条件 更新回去不就行了么
Ade子夜 2011-06-23
  • 打赏
  • 举报
回复
ding!!
jianglili130 2011-06-23
  • 打赏
  • 举报
回复
再问下
UPDATE如何实现呢
??
以ID为分组,对NEW列倒序更新
horizonlyhw 2011-06-23
  • 打赏
  • 举报
回复

with table_a as
(
select '111' ID ,'a' class ,'1' new from dual
union
select '111' ID ,'b' class ,'2' new from dual
union
select '111' ID ,'c' class ,'3' new from dual
union
select '222' ID ,'a' class ,'1' new from dual
union
select '222' ID ,'b' class ,'2' new from dual
union
select '222' ID ,'c' class ,'3' new from dual
union
select '222' ID ,'d' class ,'4' new from dual
)
select table_a.ID,table_a.class,row_number() over(partition by table_a.ID order by table_a.ID,table_a.class desc)
from table_a
order by table_a.ID,table_a.class,table_a.new desc

jianglili130 2011-06-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 snowmote 的回复:]
ORDER BY ID, CLASS, NEW DESC
[/Quote]


更新NEW列
SnowMote 2011-06-23
  • 打赏
  • 举报
回复
ORDER BY ID, CLASS, NEW DESC
jianglili130 2011-06-23
  • 打赏
  • 举报
回复
期望结果:NEW列倒序

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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