2013-03-25 65 views
3

我是PHP初學者請幫助我..如何從MySQL獲得創紀錄的最後一個值

我有一個像波紋管

id name  value_1 value_2 
1 rakesh 100  50 
2 david 150  10 
3 richard 0  0 
4 michael 0  0 

的MySQL紀錄我想最後一條記錄到VALUE_1做一些數學 但如果最後一條記錄_1 == 0意味着我要去弄上頂_1(_1 = 150)

我用波紋管代碼,但我得到的只有最後一個值

$get=mysql_query("SELECT MAX(id) FROM table_name "); 
$got = mysql_fetch_array($get); 
$next_id = $got['MAX(id)']; 

在這裏得到3D理查德_1 == 0 ,但我想第二個大衛_1 150

請幫我在此先感謝...

+0

什麼是採樣數據所需的輸出你貼? – 2013-03-25 09:02:51

+0

我已經更新了我的答案。 – 2013-03-25 09:03:21

+0

保留變量中具有正值的最後一行,例如$ last_positive。每當你到達一行0時,只要使用存儲在$ last_positive中的值即可。 – kufudo 2013-03-25 09:03:35

回答

4

您所查詢的是給你的最後一排,因爲你總是選擇最大的ID。

試用能:

SELECT * FROM table_name WHERE value_1 > 0 ORDER BY value_1 DESC LIMIT 1 
  • 它會選擇整行,所以你不會需要進行額外的查詢。
  • WHERE value_1> 0將只選擇其中value_1大於0的行。它假定這樣的記錄存在。讓我知道如果這不是你的情況。
  • ORDER BY value_1 DESC通知查詢按降序排列value_1,因此所需的行將位於最前面。
  • LIMIT 1僅選擇第一行。
2

聽起來像是你想:

SELECT MAX(id) FROM table_name WHERE value_1 <> 0 

將選擇最大的ID,其中value_1不爲0

1

試試這個:

$get=mysql_query("SELECT value_1 FROM table_name 
        WHERE value_1 != 0 
        ORDER BY id DESC 
        LIMIT 1"); 

我其實並沒有理解問題,這是另一個給你不同結果的答案:

$get=mysql_query("SELECT value_1 FROM table_name 
        WHERE value_1 != 0 
        ORDER BY value_1 DESC 
        LIMIT 1"); 

DIFF與兩個疑問是,一個是ORDER BY id DESC等是ORDER BY value_1 DESC

+0

請詳細解釋-1 – 2013-03-25 09:02:23

+0

爲什麼有人投了票,卻沒有讀取他的驅動程序 – 2013-03-25 09:05:24

+0

他想讓'ID'不是價值,*我猜* – 2013-03-25 09:07:56