1

次のような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 を試してみたいと思います。私は試した:

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同一の値をすべて 1 行に集約します。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 に答える