如何将具有特定值的列添加到现有数据库表

时间:2016-04-25 12:48:00

标签: sql oracle db2 window-functions

我需要有关必须与DB2和Oracle一起运行的SQL语句的建议。

前段时间,已经设置了一个没有ID列的数据库表。添加ID列不是问题,但我绝对需要用每行的行号填充它。 我发现,rank()会很完美,但在这里我无法选择具体的值因为那时我总是得到值'1'。

当我按如下所述设置中间表时,我输出所有需要的数据

WITH MY_TEMP_TABLE AS
(
    SELECT RANK() OVER (ORDER BY CODE ASC) MY_ROW, CODE, LAND  
    FROM SECOND_TABLE
) 
SELECT *
FROM SECOND_TABLE
INNER JOIN MY_TEMP_TABLE ON SECOND_TABLE.CODE=MY_TEMP_TABLE.CODE 

如何使用MY_ROW中的值更新数据库表中的ID列(此处为:SECOND_TABLE)?

非常感谢...

1 个答案:

答案 0 :(得分:1)

使用row_number()而不是rank():

WITH MY_TEMP_TABLE AS
(
    SELECT row_number() OVER (ORDER BY CODE ASC) MY_ROW, CODE, LAND  
    FROM SECOND_TABLE
) 
SELECT *
FROM SECOND_TABLE
INNER JOIN MY_TEMP_TABLE ON SECOND_TABLE.CODE=MY_TEMP_TABLE.CODE