如何将我的选择语句限制为仅显示一个?
如果您使用的是 Oracle 12c,则可以使用CROSS APPLY
而不是INNER JOIN
。
CROSS APPLY (SELECT inactivationremark,
createts
FROM t_se_internalrating ir
WHERE ir.RATINGSTATUS = 'Deactivated'
AND ir.PARTNERID = p1.ID
ORDER BY ir.createts DESC
fetch first 1 rows only
) ir
寻找交叉应用或外部应用 - 这是您正在寻找的模式。看这里。
如果您使用的是较低版本,则可以使用 ROW_NUMBER 函数:
inner join
( SELECT
inactivationremark,
createts,
row_number() OVER(
PARTITION BY ir.partnerid ORDER BY ir.createts DESC) rn
FROM t_se_internalrating ir
WHERE ir.ratingstatus = 'Deactivated')
) ir
ON ir.partnerid = p1.id AND ir.rn < 2
AND rn < 2
条件可确保仅包含最新的评级。