我想获得表B中表A中事件发生日期的当前状态。
Table A
Person: Date: Event
Bob 2020-01-05 Party
Table B
Person: Date: Status
Bob 2020-01-08 Awake
Bob 2020-01-03 Dinner
Bob 2020-01-01 Cycling
所以正确的结果将是
Bob 2020-01-05 Party Dinner
我尝试了此操作,但收到错误消息'不支持不带聚集且具有限制的相关子查询表达式'。
SELECT
A.Person,
A.Date,
A.Event,
(
SELECT Status FROM B
WHERE A.Person = B.Person AND B.Date <= A.Date
ORDER BY B.Date desc
LIMIT 1
) AS Status
FROM A
有人可以告诉我该怎么办吗?我尝试了其他一些想法,但仍然遇到其他错误。
如果只需要一个人的结果,则可以排序和限制:
select
a.person,
a.date,
a.event,
b.status
from tablea a
inner join tableb b on b.person = a.person
where a.person = 'Bob'
order by b.date desc
limit 1
如果您想一次处理一个以上的人,则可以使用窗口功能:
select *
from (
select
a.person,
a.date,
a.event,
b.status,
row_number() over(partition by a.person order by b.date desc) rn
from tablea a
inner join tableb b on b.person = a.person
) t
where rn = 1