如何限制我的select语句只显示一个?
答案 0 :(得分:1)
如果您使用的是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
寻找CROSS APPLY或OUTER APPLY - 这是您正在寻找的模式。 See here
如果您使用的是较低版本,则可以使用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
条件可确保仅包含最新评分。