从数据库中提取最大日期并在另一个查询中使用输出
Extracting max date from a database and use output in another query
我想在 table 中查询最大日期,并在另一个查询的 where 子句中将其用作参数。我这样做:
query = (""" select
cast(max(order_date) as date)
from
tablename
""")
cursor.execute(query)
d = cursor.fethcone()
作为输出:[(datetime.date(2021, 9, 8),)]
然后我想将此输出用作另一个查询中的参数:
query3=("""select * from anothertable
where order_date = d::date limit 10""")
cursor.execute(query3)
作为输出:column "d" does not exist
我试过 cast(d as date)
, d::date
但没有任何效果。我也试过datetime.date(d)
也没成功
我做错了什么?
没有理由 select 日期然后在另一个查询中使用它。这需要 2 次往返服务器。在一个查询中完成。这具有删除该日期的所有客户端处理的优点。
select *
from anothertable
where order_date =
( select max(cast(order_date as date ))
from tablename
);
我不是很清楚这如何转化为您的混淆层,但据我所知,我相信它会是这样的。
query = (""" select *
from anothertable
where order_date =
( select max(cast(order_date as date ))
from tablename
) """)
cursor.execute(query)
注意@OneCricketeer 的警告。您可能还需要在另一个表 order_date 上进行转换。所以where cast(order_date as date) = ( select ... )
我想在 table 中查询最大日期,并在另一个查询的 where 子句中将其用作参数。我这样做:
query = (""" select
cast(max(order_date) as date)
from
tablename
""")
cursor.execute(query)
d = cursor.fethcone()
作为输出:[(datetime.date(2021, 9, 8),)]
然后我想将此输出用作另一个查询中的参数:
query3=("""select * from anothertable
where order_date = d::date limit 10""")
cursor.execute(query3)
作为输出:column "d" does not exist
我试过 cast(d as date)
, d::date
但没有任何效果。我也试过datetime.date(d)
也没成功
我做错了什么?
没有理由 select 日期然后在另一个查询中使用它。这需要 2 次往返服务器。在一个查询中完成。这具有删除该日期的所有客户端处理的优点。
select *
from anothertable
where order_date =
( select max(cast(order_date as date ))
from tablename
);
我不是很清楚这如何转化为您的混淆层,但据我所知,我相信它会是这样的。
query = (""" select *
from anothertable
where order_date =
( select max(cast(order_date as date ))
from tablename
) """)
cursor.execute(query)
注意@OneCricketeer 的警告。您可能还需要在另一个表 order_date 上进行转换。所以where cast(order_date as date) = ( select ... )