我是php初学者,请帮助我..
我有像bellow一样的mysql记录
id name value_1 value_2
1 rakesh 100 50
2 david 150 10
3 richard 0 0
4 michael 0 0
我想要最后一个记录value_1做一些数学运算 但是如果最后一次记录value_1 == 0意味着我想要获得最高值_1(value_1 = 150)
我使用波纹管代码,但我只得到最后一个值
$get=mysql_query("SELECT MAX(id) FROM table_name ");
$got = mysql_fetch_array($get);
$next_id = $got['MAX(id)'];
这里得到3d richard value_1 == 0 但我想要第二个david value_1 150
请提前帮助我...
答案 0 :(得分:5)
您的查询为您提供了最后一行,因为您始终选择最大的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
仅选择第一行。答案 1 :(得分:2)
听起来像你想要的那样:
SELECT MAX(id) FROM table_name WHERE value_1 <> 0
将选择value_1
不为0的最大ID
答案 2 :(得分: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");
两个查询的差异是一个是ORDER BY id DESC
而另一个是ORDER BY value_1 DESC