0

データベースに 3 つのテーブルがあります。

表 1 (ユーザー)
userid(PK)
EmployeeName

表 2 (SubDept)
SubDeptID(PK)
部門

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

ここに表3の例の表があります

ここに画像の説明を入力
私がやりたかったのは、ユーザー 100 の SubDeptID を印刷できるようにすることです。問題は、100 のユーザー ID が 2 つあるため、両方を印刷することです。ミッションは、後者の TransferID を使用して 1 つのデータのみを印刷できるようにすることです。問題に最適な選択ステートメントは何ですか?

4

2 に答える 2

2

私はそうするでしょう:

SELECT subDeptId FROM SubDeptTransfer WHERE userId = 100 ORDER BY transferId DESC LIMIT 1
于 2013-02-20T03:18:52.193 に答える
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 に答える