1

我有一个 MySQL 数据库架构,如下所示:

id    flags     views    done
-------------------------------
1     2         20       0
2     66        100      0
3     25        40       0
4     30        60       0 

... thousands of rows ...

我想更新其标志/视图> = 0.2的所有行。首先作为测试,我想尝试 SELECT 以查看实际更新了多少行。我试过:

SELECT flags/views AS poncho FROM mytable HAVING poncho > 0.2

但这只会返回 2 行,我知道应该还有更多。似乎它正在计算所有行的雨披值或一些奇怪的东西。我究竟做错了什么?

谢谢!

4

1 回答 1

1

使用该WHERE子句代替HAVING

SELECT flags/views AS poncho FROM mytable WHERE flags/views > 0.2

HAVING将所有相同的值聚合到一行。SQL 标准不允许HAVING没有对应的子句GROUP BY,但 MySQL 对标准非常宽容。你所拥有的实际上与

SELECT flags/views AS poncho
FROM   mytable
GROUP  BY poncho
HAVING poncho > 0.2

更多的手册在这里

于 2012-06-11T03:37:08.810 回答