我正在处理一个查询,该查询需要在A.user_id = B.user_id上使表B与表B保持连接,并且B.day小于A.day,但最接近A.day。
这是我写的:
Select A.user_id, A.date, b1.v1 from A
Left Join B as b1
on A.user_id=b1.user_id and b1.day=(Select max(day) from B as b2 where b2.user_id=A.user_id
and b2.day < A.day)
我正在使用psycopg2在python中执行此操作,并且返回错误:This type of correlated subquery pattern is not supported yet
。
有人可以帮我重写此代码,使其不使用相关子查询吗?
一种方法可以是:
Select A.user_id, A.date, b1.v1, max(b1.day)
from A Left Join B as b1 on A.user_id=b1.user_id and b1.day < A.day
group by A.user_id, A.date, b1.v1;