请问各位高手,何为伪列题目:Oracle数据库表存在伪列rowid,请利用rowid编写一个SQL语句,从以下记录中找到唯一记录,并将其flag列更新为Y  ---?????No name sex flag
1 张三 1 N
1 张三 1 N
1 张三 1 N关键字:oracle 伪列

解决方案 »

  1.   

    update tablename set flag = 'Y' where rowid = (select rowid from tablename where rownum = 1 );
      

  2.   

    rowid,rownum都是伪列,不是真实的存储在表中的列
      

  3.   

    可以在dual查询出的都是伪列,dual是个虚拟表
    select rowid,rownum,sysdate,user from dual
      

  4.   

    伪列就是select * from tablename 查不到的列,不是真实的存储在表中的列。
    可以在dual查询出的都是伪列,dual是个虚拟表
    例如:select rowid,rownum,sysdate,user from dual update tablename set flag = 'Y' where rowid = (select rowid from tablename where rownum = 1 );
      

  5.   

    Rowid的概念:rowid是一个伪列,既然是伪列,那么这个列就不是用户定义,而是系统自己给加上的。对每个表都有一个rowid的伪列,但是表中并不物理存储ROWID列的值。不过你可以像使用其它列那样使用它,但是不能删除改列,也不能对该列的值进行修改、插入。一旦一行数据插入数据库,则rowid在该行的生命周期内是唯一的,即即使该行产生行迁移,行的rowid也不会改变。