SQL - 如果resultset包含多行,则返回最新(id)结果

时间:2012-08-03 11:56:54

标签: sql db2

如果查询将返回多个结果,我需要在我的select中获取最新(id)行的条件。 (IBM db2)

即:

ID--NUM1--COUNTRY--NUM2

1--123--SE--123

2--123--US--123

我希望返回第2行,而不是返回两行。

修改

我的查询现在看起来像这样:

SELECT   LET1.INSTANCE_ID, COU.CODE, SUP1.SUPPLIERID, PAR.PARTNUMBER 

FROM     TABLES

WHERE    TABLEJOIN_CONDITIONS

AND      TABLE.COLUMN IN ('11994', '12345' and so on)

但是这个查询可以返回重复的行。

像:

ID--NUM1--COUNTRY--NUM2

1--123--SE--11994 (11994 appearing twice, then I want the latest row which is row number 2)

2--123--US--11994

2 个答案:

答案 0 :(得分:0)

按降序对id进行排序,只获取第一条记录。

我没有使用db2语法,但是类似于:

SELECT id, num1, country, num2
FROM SomeTable
ORDER BY ID DESC
FETCH FIRST 1 ROW ONLY

答案 1 :(得分:0)

我对哪些数字使其“独特”感到困惑,但如果您只想为每个ID组合使用最新的NUM1, NUM2,那么您可以执行以下操作:

SELECT *
FROM (
    SELECT A.*, 
           ROW_NUMBER() OVER (PARTITION BY NUM1, NUM2 ORDER BY ID DESC) AS RN
    FROM YOUR_TABLE A
)
WHERE RN = 1

子选择将为每个num1num2组合分配行号,按ID排序,并且只选择该组合的第一行。