PyCharm 有过时的 SQL 方言?

PyCharm has outdated SQL dialects?

我正在使用 python 脚本处理 PostgresQL 数据库。我有这样的查询:

UPDATE orders SET id=%s, client=%s, contents=%s, adress=%s, detail=%s, price=%s HAVING MIN(id)

它工作正常,但是 PyCharm 说“having”语句不存在,我应该使用“where”(而“where”在这个查询中给出了一个例外,因为我使用的是“MIN” ”)。我在 PyCharm 中将 SQL 方言设置为“PostgresQL”。有什么方法可以解决这个恼人的问题?

UPD:不好意思,这个查询不起作用。它以某种方式没有在 python 中抛出异常,但是数据库中的行没有更新。那么我应该使用什么查询来更新具有最少 id 的行?

您可以使用子查询或 CTE 在同一查询中获取 min(id)。也许是这样的:

    update some_tbl 
       set col = 1 
     where id = (select min(id) 
                   from some_tbl
                ) ;

    with lowers(mid) as 
         (select min(id) 
            from some_tbl
          ) 
    update some_tbl st
       set col = 1 
      from lowers l  
      where st.id = l.mid;