DB2表中有ROWID吗?我现在运到一个问题,我有一个表,里面的ID为字母,我要画一个树,这个树只支持ID为数字的,所以我想用SQL将ROWID取出来,然后去查找相应的记录,但是用ROW_NUMBER会出现一个问题,就是本来表中有三条记录,新增了一条的话,用ROW_NUMBER很难查出来的.表名Rptype_info
rptype_id descript sup_id
allreport 所有报表  
g_base    基础报表  allreport
aa        广州分行报表 g_base
bb        深圳分行报表 g_base
在线等,马上结贴.

解决方案 »

  1.   

    好像windows平台没有这个的
    不过可以使用一个函数ROW_NUMBER()试试,参考下面的例子。--取第一行
    SELECT * 
    FROM ( SELECT ROW_NUMBER() OVER (ORDER BY empno ASC) AS ROWNUMBER,
                  EMPNO,
                  FIRSTNAME 
           FROM EMPLOYEE ) AS AWHERE ROWNUMBER = 1; --取第三行到第五行
    SELECT * 
    FROM ( SELECT ROW_NUMBER() OVER (ORDER BY empno ASC) AS ROWNUMBER,
                  EMPNO,
                  FIRSTNAME 
           ROM EMPLOYEE ) AS A
    WHERE ROWNUMBER BETWEEN 3 AND 5; --取最后一行
    SELECT * 
    FROM ( SELECT ROW_NUMBER() OVER (ORDER BY empno ASC) AS ROWNUMBER,
                  EMPNO,
                  FIRSTNAME 
           FROM EMPLOYEE ) AS A
    WHERE EMPNO=(SELECT MAX(EMPNO) FROM EMPLOYEE); --取所有行
    SELECT * 
    FROM ( SELECT ROW_NUMBER() OVER (ORDER BY empno ASC) AS ROWNUMBER,
                  EMPNO,
                  FIRSTNAME 
           FROM EMPLOYEE ) AS A
    WHERE ROWNUMBER IS NOT NULL; 
      

  2.   

    使用ROW_NUMBER() OVER(),再套一层select.
      

  3.   

    这个我知道的,就是害怕到时候记录由三条变成四条,我还用row_number去记录里面找记录,这样就找不到啊.
      

  4.   

    关键改表结构有点麻烦,难道DB2中没有象ORACLE中ROWID吗?