如果查询将返回多个结果,我需要在我的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
答案 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
子选择将为每个num1
,num2
组合分配行号,按ID
排序,并且只选择该组合的第一行。