2013-05-20 61 views
-1

首先要做的事情。我只知道MS SQL Server。所以,很難理解一些MySQL語法。 下面語句是在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. $ value = 10

感謝您的期待。

+0

值是大於零。這似乎是你試圖評估價值是否爲負數 –

+0

我正在使用MSSQL在Asp.Net中實施Genetify多變量測試。 $值永遠不會是負值。事實上,我認爲它也不能爲零。 – iMatoria

回答

1

這是一個布爾表達式。其含義是相同的這個條件表達式:

CASE WHEN $value>0 THEN 1 ELSE 0 END 

在你UPDATE的情況下,nonzero列將每次$value爲正遞增。

0

如果$ value大於0(正數),它將計入「非零」變量中。每個數字將爲每個正數獲得+1。

+0

你的意思是如果$ value = 10,會比9增加嗎? – iMatoria

1

表達:

($value>0) 

在MySQL中一個布爾表達式。布爾值被解釋爲0代表假,1代表真。這在所有數據庫中都不是這樣,但在MySQL中卻是如此。

所以,當$ value爲0時,這是「0」。當1或10時,它是「1」。其結果是,當該值大於0

換句話說領域nonzero遞增,這相當於:

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