2011-05-18 14 views
0

之間的差異,當空,我有3列 ID,someValue中(浮點),當前時間戳MySQL的回報率要求在我的表中的一些值和空

下面的代碼搜索在今天的日期的最新值,並減去與同一周的星期一的價值。但本週沒有存儲星期一的任何值,所以此時它的值爲NULL。但下面的代碼的結果應該是一些值不爲空?不明白怎麼可能。請解釋一下。

select(SELECT power FROM newdb.newmeter 
where date(dt)=curdate() order by dt desc limit 1)- 
(select Power from newdb.newmeter 
where date(dt)=(select date(subdate(now(), interval weekday(now()) day)))); 

因爲我讀了類似的問題,答案看起來像什麼你做零mysql中爲空,這是真的? 如果是我該如何解決這個

更新: 我試過,但沒有工作 選擇總和(金額) - COALESCE(SUM(由於),0)

只是想更多的東西添加到這個 我打電話querydb如下在C++ MySQL的

bool Querydb(char *query, double Myarray[1024]) 
{ 
    //snip// 

    if (mysql_query(conn, query)) { 
    fprintf(stderr, "%s\n", mysql_error(conn)); 
    return 0; 
    } 

    else { 
    res = mysql_use_result(conn); 
    //output table name 
    //printf("MySQL Tables in mysql database:\n"); 

    //checking for null value in database 
    while((row = mysql_fetch_row(res))==NULL){ 
     printf("ERROR_____NULL VALUE IN DATABASE "); 
     return 0; 
    } 

    //if not null then ... 
    while ((row = mysql_fetch_row(res)) != NULL){ 
     printf("rows fetched %s\n", row[0]); 
     sprintf(buffer,"%s",row[0]); 
     value1 = atof(buffer); 
     Myarray[i]=value1; 
     //printf("Myarray in sql for daybutton = %f\n",Myarray[i]); 
     i++; 
     } 
    i=0; 
    //for(i=0;i<5;i++){ 
    // printf("mya arr in sqlfunction = %f\n",Myarray[i]);} 
    return 1; 
    } 
    printf("if here then....where??\n"); 

    //close connection 
    // mysql_free_result(res); 
    //return 0; 
} 

上面的函數工程確定不同的查詢時,數據庫中有與此查詢

空但不工作

即使認爲答案爲NULL,它也會返回1 ...

回答

3

你想要什麼樣的價值?這不是MySQL特別具體 - 涉及空操作數(包括比較)的操作在大多數SQL方言中都有空結果。

您可能希望使用COALESCE()來提供一個「默認」值,當您的實際目標值爲空時使用該值。

0

解決將是

select(SELECT power FROM newdb.newmeter 
where date(dt)=curdate() order by dt desc limit 1)- 
(select COALESCE(Power,0) from newdb.newmeter 
where date(dt)=(select date(subdate(now(), interval weekday(now()) day)))); 
+0

感謝隊友試過,但仍返回null ???? – rasmalai 2011-05-18 06:42:22