我有两张桌子
tblXYZ
patId | Name | DOB
---------------------------
1 | xyz | 10-05-1986
2 | abc | 12-06-01978
3 | lmn | 12-04-1975
tblABC
apptId | patId | status | otherinfo
-------------------------------------
1 | 1 | single | jmdfh
2 | 1 | sds | dfdf
3 | 2 | fdf | sdwed
4 | 2 | fdf | sdwed
我想加入这两个表来获得结果:
结果
patId | apptId | Name | DOB
--------------------------------
1 | 2 | single | jmdfh
2 | 4 | sds | dfdf
3 | null | fdf | sdwed
apptId
应该是tblABC
答案 0 :(得分:0)
尝试类似的东西
select patId, apptId, Name, DOB
join -- or left join if you want patId that doesn't have match in the second table
(
select patId AS patIdBis, max(apptId) AS apptId
from tblABC group by patId
)
on patId = patIdBis
order by patId;
答案 1 :(得分:0)
如果通过“最后输入”表示最大的apptId,则以下查询将执行您想要的操作。
SELECT tblXYZ.patId, tblABC.apptId, tblXYZ.name, tblXYZ.DOB
FROM tblXYZ
LEFT JOIN
(
(SELECT patId, MAX(apptId) mx FROM tblABC GROUP BY patId) maxes
INNER JOIN tblABC
ON maxes.patId = tblABC.patId AND maxes.mx = tblABC.apptId
) ON tblXYZ.patId = tblABC.patId;
更新:Valentin Clement的查询更短,如果你只需要来自tblABC的apptId,那就更好了。如果您需要来自tblABC的任何其他数据,那么您需要使用我的答案中的查询。
答案 2 :(得分:0)
使用此查询获取结果
SELECT x.patid, a.apptid, x.name, x.dob
FROM tblxyz x INNER JOIN tblabc a ON
x.patid=a.patid
patid apptid name DOB
1 1 xyz 1986-10-05 00:00:00.000
1 2 xyz 1986-10-05 00:00:00.000
2 3 abc 1978-12-06 00:00:00.000
2 4 abc 1978-12-06 00:00:00.000