MySQL - 使用WHERE或HAVING子句中的结果计算每行中两列的值

时间:2012-06-11 03:23:56

标签: mysql sql select division

我有一个像这样的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行而我知道应该有更多。看起来它正在计算所有行上的poncho值或奇怪的东西。我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分: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

手册here中的更多内容。