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;
我正在使用 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;