从数据库中提取最大日期并在另一个查询中使用输出

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 ... )