“>”的含义在MySQL更新语句中

时间:2013-05-20 03:46:36

标签: mysql

首先要做的事情。我只知道MS SQL Server。所以,很难理解一些MySQL语法。 以下语句在MySQL中:

INSERT INTO stats_by_variantstats(variant_id, count, nonzero, sum, avg, sumsq, wavg)
VALUES(5, 1, 0, 0, 0, 0, 0)
ON DUPLICATE KEY UPDATE
        count = count + $count,
        nonzero = nonzero + ($value>0),
        sum = sum + $value,
        avg = sum / (count + 1),
        sumsq = sumsq + ($value * $value),
        wavg = 0.9 * wavg + 0.1 * $value

对于以下情况,上述陈述(第5行)中($value>0)的含义是什么:

  1. $ value = 0
  2. $ value = 1
  3. $ value = 10
  4. 感谢您的期待。

3 个答案:

答案 0 :(得分:1)

这是一个布尔表达式。其含义与此条件表达式相同:

CASE WHEN $value>0 THEN 1 ELSE 0 END

如果您UPDATEnonzero每次$value为正时,{{1}}列都会递增。

答案 1 :(得分:1)

表达式:

($value>0)

是MySQL中的布尔表达式。对于false,布尔值被解释为0,对于true,布尔值被解释为1。在所有数据库中都不是这样,但在MySQL中也是如此。

因此,当$ value为0时,则为“0”。当1或10时,则为“1”。结果是当值大于0时,字段nonzero会递增。

换句话说,这相当于:

nonzero = (case when $value > 0 then nonzero + 1 else nonzero end)

答案 2 :(得分:0)

如果$ value大于0(正数),它将计入“非零”变量。每个正数都会得到+1。