4

我是php初学者请帮助我..

我有如下的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 意味着我想去获取上最高 value_1 (value_1=150)

我使用波纹管代码,但我只得到最后一个值

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

这里得到 3d 理查德 value_1==0 但我想要第二个大卫 value_1 150

请帮助我提前谢谢...

4

3 回答 3

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仅选择第一行。
于 2013-03-25T09:01:00.120 回答
2

听起来像你想要的:

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

将选择value_1不为0的最大ID

于 2013-03-25T09:01:24.147 回答
2

尝试这个 :

$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

于 2013-03-25T09:01:46.443 回答