关于自动生成序号的问题!!!

alexela 2004-10-19 03:30:35
我想对生成的结果集进行标识,例如如果生成

col1 col2 col3
----------------
c11 c12 c13
c21 c22 c23
c31 c32 c33

显示出来的应该是
id col1 col2 col3
----------------
1 c11 c12 c13
2 c21 c22 c23
3 c31 c32 c33

其中ID是自动生成的唯一ID

我使用了序列,select seq.nextval,col1,col2,col3 from test,结果是正常的,可是一旦我使用group by 语句后,SQL Explorer老提示‘此处不应该有序列’(我想对某个字段分组后的结果进行排序),请问高手这个SQL该怎么写??!!

多谢了!!!
...全文
257 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
alexela 2004-10-19
  • 打赏
  • 举报
回复
ok, bzszp(SongZip) , 非常感谢! rownum虽不能解决全局问题,但是我用同样的方法使用sequence代替了。马上给各位加分
bzszp 2004-10-19
  • 打赏
  • 举报
回复
example:

insert into class_new
select rownum||'class' class_id,t.* from
(select class_name,class_addr,.. from students group by class_name,class_addr,..) t;
alexela 2004-10-19
  • 打赏
  • 举报
回复
bluelamb, 使用max(rownum)还是不能保证全局唯一,只是当前结果集才有效啊!
alexela 2004-10-19
  • 打赏
  • 举报
回复
有一张大表,例如班级的学生信息,既包括了学生个人信息,又包括了学生所属的班级信息,多个学生在同一个班级,那么这些学生的班级信息都是相同的,我现在需要从这张大表里提取出班级信息组成一个新表,而新表中班级信息是不允许重复的,那么我必须要用group by 来归类这些班级信息(例如字段‘班级名称’),而新表中我需要根据新的班级信息创建编号,而这个编号不是通过自动编号字段来定义的,而是一般的char,通过SQL语句来生成。
这就是具体要求:) 谢谢
bluelamb 2004-10-19
  • 打赏
  • 举报
回复
select rownum,col1,col2,col3 from test
select max(rownum),col1,col2,col3 from test group by col1,col2,col3
bzszp 2004-10-19
  • 打赏
  • 举报
回复
insert into tb_B select rownum,tb_A.* from tb_A;

说说你的具体要求,sql语句应该可以完成的
alexela 2004-10-19
  • 打赏
  • 举报
回复
并且,我需要的是在group by 或者带有distinct的语句生成后的结果集里加序号! 也就是某个字段值可能不唯一,我要以其唯一的值来生成结果集,这里我们假设与该字段相关的其他字段在该字段相同的情况下也分别是相同的。
alexela 2004-10-19
  • 打赏
  • 举报
回复
多谢两位, 这条语句生成的id只是在当前结果集有效,我希望的是在整个数据库中有效,因为选择后的结果集是要插入到另一张表中的。 可否再赐教!?
bzszp 2004-10-19
  • 打赏
  • 举报
回复
select rownum id,col1,col2,col3 from test;
LGQDUCKY 2004-10-19
  • 打赏
  • 举报
回复
select rownum,col1,col2,col3 from test

17,377

社区成员

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

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