我需要有关必须与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)?
非常感谢...
答案 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