- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试运行一个子查询,然后根据与该子查询的匹配进行更新。输出 SQL 一切都会正常工作,除了 SQLAlchemy 似乎无缘无故地将“=1”添加到我的子查询末尾,这使得更新命中 0 行。代码如下:
to_update = session.query(DSI.id)\
.join(TB)\
.join(TBC)\
.join(TBCTD)\
.filter(func.DATE(TBCTD.dt)
== func.subdate(func.current_date(), 2))\
.filter(DSI.score > 110)\
.group_by(func.DATE(TBCTD.dt),
DSI.name, DSI.a_id)\
.having(func.sum(
TBCTD.num_things
> 100)).subquery()
session.query(DSI).filter(DSI.id == to_update.c.id)\
.update({"some_num": DSI.some_num*.98})
从中吐出的 MYSQL 看起来像:
UPDATE dsis, (SELECT dsis.id AS id
FROM dsis
INNER JOIN tbs ON tbs.id = dsis.a_id
INNER JOIN tbcs ON tbs.id = tbcs.a_id
INNER JOIN tbctds ON tbcs.id = tbctds.tbcs_id
WHERE DATE(tbctds.dt) = subdate(CURRENT_DATE, %s)
AND dsis.score > %s
GROUP BY DATE(tbctds.dt), dsis.name, dsis.a_id
HAVING sum(tbctds.num_things > %s) = 1)
AS anon_1
SET dsis.some_num=(dsis.some_num * %s)
WHERE dsis.id = anon_1.id
2015-02-20 21:11:53,164 INFO sqlalchemy.engine.base.Engine (2, 110, 100, 0.98)
如您所见,子查询的末尾毫无缘由地添加了一个额外的“= 1”,我也不知道。我尝试用几种方法重写该语句,但总是遇到同样的问题。
最佳答案
你应该写
having(func.sum(TBCTD.num_things) > 100)
它测试 sum()
是否大于 100。而不是你写的
having(func.sum(TBCTD.num_things > 100))
它将 bool 值相加(依次为TINYINT(1)
。
有趣的是,true 作为整数是 -1,而 false 是 0;所以你将以非正整数结束); SQLAlchemy 知道它需要一个 bool 值来having
,因此它尝试通过将其与1
进行比较来测试它的真实性;毕竟,在 MySQL 中,值为 -1
的 TINYINT(1)
将等于 1
,因为 1
作为常量被强制为 TINYINT(1)
范围。
但是,在您的情况下,HAVING
子句永远不可能为真,因为结果不是 bool 值,而且也不是正值。
关于python - SQLAlchemy 无缘无故地将 "=1"添加到子查询的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28669978/
我正在安装这个程序:THERMUS ,据我所知应该安装正常。我/我通过 ubuntu 控制台安装这个程序。但是当我运行 make all 时,我收到了这条消息: make: ***No rule to
我正在渲染一个简单的 sass 文件并收到以下警告: This selector doesn't have any properties and won't be rendered. ╷ 14
我不明白为什么文本不会与 div 的中间对齐,我认为这是导致页面底部出现空白的原因,我希望文本位于中间(高度)页脚的(两个 div 我都有两个强制文本的每个部分到页面的边缘) HTML:
我正在尝试为 android 创建基本的音乐播放器。对我来说一切似乎都很好,但是当我试图在我的手机上运行应用程序时。它说它停止了。我无法解决那个问题。感谢您的任何帮助。我试图在应用程序停止时查看“Lo
在我的 LoginProvider 中,我使用了一个函数来执行登录并将创建的 session 作为 promise 返回。 @Injectable() export class LoginProvid
我在 Google Cloud Platform 上运行 Dataflow-Jobs,我收到的一个新错误是“Workflow failed”,没有任何解释。我得到的日志如下: 2017-08-25
我已经阅读了无数关于这个错误的主题,但是没有一个和我有同样的问题。 我得到了 E/MediaPlayer: 错误 (-19, 0) E/MediaPlayer: 错误 (-19,0) 错误,然而,音乐
这个错误或我缺乏知识或其他东西真的开始困扰我。我正在开发一个 Grails 应用程序,并且在我的工作过程中随机出现 Grails 提示一些导入,说无法解析类名。它在一个保存前工作!我没有对项目的基础设
我为此失去了头发!我不断收到“发送后无法设置 header ”错误,我确定我没有像在其他问题中看到的那样调用 Next()。我的代码一直在工作,直到我尝试进行一些重构,我没有改变这个类的任何东西,所以
我是一名优秀的程序员,十分优秀!