首先要做的事情。我只知道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)
的含义是什么:
感谢您的期待。
答案 0 :(得分:1)
这是一个布尔表达式。其含义与此条件表达式相同:
CASE WHEN $value>0 THEN 1 ELSE 0 END
如果您UPDATE
,nonzero
每次$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。