-1

まず最初に。私は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

($value>0)次の場合、上記のステートメント (行: 5) の意味は何ですか:

  1. $値 = 0
  2. $値 = 1
  3. $値 = 10

ありがとうございます。

4

3 に答える 3

1

これはブール式です。その意味は、次の条件式と同じです。

CASE WHEN $value>0 THEN 1 ELSE 0 END

の場合、 aが正であるたびUPDATEに列がインクリメントされます。nonzero$value

于 2013-05-20T03:49:42.920 に答える
1

表現:

($value>0)

MySQL のブール式です。ブール値は、false の場合は 0、true の場合は 1 として解釈されます。これはすべてのデータベースに当てはまるわけではありませんが、MySQL には当てはまります。

したがって、$value が 0 の場合、これは "0" です。1または10の場合は「1」です。その結果nonzero、値が 0 より大きい場合にフィールドがインクリメントされます。

つまり、これは次と同等です。

nonzero = (case when $value > 0 then nonzero + 1 else nonzero end)
于 2013-05-20T03:50:45.767 に答える
0

$value が 0 (正) より大きい場合、「ゼロ以外」の変数でカウントされます。各数値は、正の数値ごとに +1 を取得します。

于 2013-05-20T03:49:04.010 に答える