我需要连接三个表TM, TA, MS
- TA在TM中的每一行都有多个记录我需要在TM中基于名为status的字段获取last row from TA
的所有行。最新记录
这是我的疑问:
select * from TABLE1 MS RIGHT OUTER JOIN
TABLE2 TM ON MS.CID = TM.CID
LEFT OUTER JOIN TABLE3 TA ON TM.EID=TA.EID;
答案 0 :(得分:1)
一种方法使用row_number()
:
select *
from TABLE1 MS JOIN
TABLE2 TM
ON MS.CID = TM.CID JOIN
(SELECT TA.*, ROW_NUMBER() OVER (PARTITION BY EID ORDER BY STATUS DESC) as seqnum
FROM TABLE3 TA
) TA
ON TM.EID = TA.EID AND seqnum = 1;
你的问题没有说明不匹配的记录,所以我删除了外连接。这些只应在您打算保留不匹配的记录时使用(并且大多数人为此目的更喜欢LEFT JOIN
到RIGHT JOIN
。