之前表数据是这样的:SQL> select * from tbl;NAME GONGZI XINGBIE
---------- ---------- -------
sr 100 男
sb 100 男
alix $2000 mail
cooltest $2000 mail后面由于执行了语句后,表数据变成了这样:SQL> insert into tbl
2 select 'ok','100','男','12345' from dual
3 connect by rownum <=5
4 /5 rows insertedSQL> select * from tbl
2 /NAME GONGZI XINGBIE WORKID
---------- ---------- ------- ------
ok 100 男 12345
ok 100 男 12345
ok 100 男 12345
ok 100 男 12345
ok 100 男 12345
sr 100 男
sb 100 男
alix $2000 mail
cooltest $2000 mail 9 rows selected本来我想问connect by rownum <=5的作用是不是把这行同样的数据连续插入5次,而且是插入到表的前5行?
后来我在没有把上面的操作commit的情况下,又执行了一次,结果如下:insert into tbl
2 select 'ok','100','男','12345' from dual
3 connect by rownum <=5
4 /5 rows insertedSQL> select * from tbl
2 /NAME GONGZI XINGBIE WORKID
---------- ---------- ------- ------
ok 100 男 12345
ok 100 男 12345
ok 100 男 12345
ok 100 男 12345
ok 100 男 12345
ok 100 男 12345
sr 100 男
sb 100 男
ok 100 男 12345
ok 100 男 12345
alix $2000 mail
cooltest $2000 mail
ok 100 男 12345
ok 100 男 1234514 rows selected这下可好,难道connect by rownum <=5的作用是随机插入了?最初我的表数据只有两行,而且写入第一行的数据(sr,100,男)后,再插第二行数据(sb,100,男)后,结果是它自动排到第一行数据的后面的,请看我最初两行时数据的显示的情况:select * from tbl;NAME GONGZI XINGBIE
---------- ---------- -------
sr 100 男
sb 100 男后面我用union all添加了两行也是顺序添加的,请看结果: insert into tbl (select 'alix','$2000','mail' from dual union all
2 select 'cooltest','$2000','mail' from dual);2 rows insertedSQL> select * from tbl;NAME GONGZI XINGBIE
---------- ---------- -------
sr 100 男
sb 100 男
alix $2000 mail
cooltest $2000 mail现在请各位说说如果我用 insert into tbl
select 'ok','100','男','12345' from dual
connect by rownum <=5;这样的语句是不是不能顺序加入行了?怎样才能做到这个语句的结果又能顺序加入呢?
---------- ---------- -------
sr 100 男
sb 100 男
alix $2000 mail
cooltest $2000 mail后面由于执行了语句后,表数据变成了这样:SQL> insert into tbl
2 select 'ok','100','男','12345' from dual
3 connect by rownum <=5
4 /5 rows insertedSQL> select * from tbl
2 /NAME GONGZI XINGBIE WORKID
---------- ---------- ------- ------
ok 100 男 12345
ok 100 男 12345
ok 100 男 12345
ok 100 男 12345
ok 100 男 12345
sr 100 男
sb 100 男
alix $2000 mail
cooltest $2000 mail 9 rows selected本来我想问connect by rownum <=5的作用是不是把这行同样的数据连续插入5次,而且是插入到表的前5行?
后来我在没有把上面的操作commit的情况下,又执行了一次,结果如下:insert into tbl
2 select 'ok','100','男','12345' from dual
3 connect by rownum <=5
4 /5 rows insertedSQL> select * from tbl
2 /NAME GONGZI XINGBIE WORKID
---------- ---------- ------- ------
ok 100 男 12345
ok 100 男 12345
ok 100 男 12345
ok 100 男 12345
ok 100 男 12345
ok 100 男 12345
sr 100 男
sb 100 男
ok 100 男 12345
ok 100 男 12345
alix $2000 mail
cooltest $2000 mail
ok 100 男 12345
ok 100 男 1234514 rows selected这下可好,难道connect by rownum <=5的作用是随机插入了?最初我的表数据只有两行,而且写入第一行的数据(sr,100,男)后,再插第二行数据(sb,100,男)后,结果是它自动排到第一行数据的后面的,请看我最初两行时数据的显示的情况:select * from tbl;NAME GONGZI XINGBIE
---------- ---------- -------
sr 100 男
sb 100 男后面我用union all添加了两行也是顺序添加的,请看结果: insert into tbl (select 'alix','$2000','mail' from dual union all
2 select 'cooltest','$2000','mail' from dual);2 rows insertedSQL> select * from tbl;NAME GONGZI XINGBIE
---------- ---------- -------
sr 100 男
sb 100 男
alix $2000 mail
cooltest $2000 mail现在请各位说说如果我用 insert into tbl
select 'ok','100','男','12345' from dual
connect by rownum <=5;这样的语句是不是不能顺序加入行了?怎样才能做到这个语句的结果又能顺序加入呢?
解决方案 »
- 有个字段,里面的值可能是13366或者13.3kb,怎么判断并统一输出13366的结果
- 如何查找INVAILD对象的错误根源?
- oracle中有没有判断某一字符串为正确的日期型数据的函数
- 大量数据的统计功能问题
- 问一个关于date的sql语句
- 那里有关于连接oracle和web services的资料
- oracle9i的数据能导入到oracle805中吗?
- 有关oracle的操作日志问题
- oracle中截取字符串
- 32位win7旗舰版安装 Oracle 11g卡在 安装向导第四页 哪位大神帮忙看下
- 如何从这样游标中取出值?(ORACLE)
- 关于在oracle9i和oracle10g之间建立dblink 测试时出现"未活动的链接"问题。
插入的时候去申请空间,申请的空间有可能是连续的,也有可能是离散的想要序号的话,可以给表加入一个字段,专门用于排序
SQL> select * from tbl;Name GongZi Xingbie WORKID Id_tbl
---------- ---------- ------- ------ ------
ss 100 女 5 1
sr 100 男 1 2
sb 100 男 2 3
alix $2000 mail 3 4
cooltest $2000 mail 4 5
ok 100 男 12345 6
ok 100 男 12345 7
ok 100 男 12345 8
ok 100 男 12345 9
ok 100 男 12345 10
ok 100 男 12345
ok 100 男 12345
ok 100 男 12345
ok 100 男 12345
ok 100 男 12345 我想用类似update tbl set "Id_tbl"=rownum;这句的语句对第10行以上的行按rounum这样的序号原封不动地加入到Id_tbl列里面去,
现在我能用下面的语句去查询第10行以上的信息(语句如下),但我在网上查到rounum是不能以rounum>10的形式来书写的,因为这样写是不能查到任何数据的,那我select尚且可以,但用update那怎么办呢?
select rownum,workid,"GongZi","Name","Xingbie" from(select rownum no ,workid,"GongZi","Name","Xingbie" from tbl) where no > 10;
update tbl set "Id_tbl"=(select rownum no from tbl) where no>11;这样写是错误的,报错如下update tbl set "Id_tbl"=(select rownum no from tbl) where no>11ORA-00904: "NO": invalid identifier同样用update tbl set "Id_tbl"=(select rownum no from tbl) where rownum no>10; 也是报同样的错误。
我不是很清楚你要实现这样一个功能是为了什么应用,不过像楼上某人说的,你可以加个时间就行啦