MySQL—使用WHERE或HAVING子句中的结果,从每行的两列计算一个值

MySQL—使用WHERE或HAVING子句中的结果,从每行的两列计算一个值,mysql,sql,select,division,Mysql,Sql,Select,Division,我有一个MySQL db模式,如下所示: 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的所有行。首先,作为一个测试

我有一个MySQL db模式,如下所示:

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 flags/views AS poncho FROM mytable HAVING poncho > 0.2
但这只返回2行,我知道应该还有更多。它似乎在计算所有行的雨披值或其他奇怪的东西。我做错了什么


谢谢

使用
WHERE
子句,而不是
have

SELECT flags/views AS poncho FROM mytable WHERE flags/views > 0.2
HAVING
将所有相同的值聚合到一行中。SQL标准不允许
拥有
子句而没有相应的
GROUP BY
,但MySQL对该标准非常宽容。你所拥有的实际上与

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

更多信息请参见手册。

使用
WHERE
子句,而不是
have

SELECT flags/views AS poncho FROM mytable WHERE flags/views > 0.2
HAVING
将所有相同的值聚合到一行中。SQL标准不允许
拥有
子句而没有相应的
GROUP BY
,但MySQL对该标准非常宽容。你所拥有的实际上与

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

手册中有更多信息。

您知道应该有,但数据库显示有2个。你有没有考虑过结果集中哪里的标志或视图为null=>flags/views=null=>不在你的结果集中。啊,是的,显然另一个查询关闭了更多可能的标志,所以我认为结果是匹配比我预期的要少得多-oops。你知道应该有,但数据库说有2个。你有没有考虑过结果集中哪里的标志或视图为null=>flags/views=null=>不在你的结果集中。啊,是的,显然另一个查询关闭了更多可能的标志,所以我认为结果是,匹配比我预期的要少得多-oops。