0

我的数据库中有 3 个表

表 1 (用户)
userid(PK)
EmployeeName

表 2 (SubDept)
SubDeptID(PK)
部门

表 3 (SubDeptTransfer)
TransferID(PK)
userid(FK)
SubDeptID(FK)

这是表 3 的示例表

在此处输入图像描述
我想做的是能够打印用户 100 的 SubDeptID。问题是因为有两个用户 ID 为 100,所以它都打印了。任务是能够仅打印一个具有后一个 TransferID 的数据。什么可能是该问题的最佳选择语句?

4

2 回答 2

2

最好的方法是使用窗口函数row_number()

select transferId, userId, subDeptId
from (select t.*,
             row_number() over (partition by userid order by TransferId desc) as seqnum
      from t
     ) t
where seqnum = 1
于 2013-02-20T02:16:39.937 回答
2

我会这样做:

SELECT subDeptId FROM SubDeptTransfer WHERE userId = 100 ORDER BY transferId DESC LIMIT 1
于 2013-02-20T03:18:52.193 回答