找到MySQL组的最大值并将其分配给变量

时间:2015-05-27 04:04:28

标签: php mysql group-by max

我有一个名为“柱面”的MySQL表。其中两列是pidreportno

pid       |  reportno
13-2021   |     1
14-2025   |     1
13-2021   |     2
13-2021   |     3
15-2034   |     1
14-2025   |     2

我想找到一个组的最高reportno,以便我可以使用下一个reportno添加到表中。

我有这个:

$query = "SELECT * FROM cylinders GROUP BY pid ORDER BY reportno DESC LIMIT 1";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$lastrpt = $row["reportno"];
$nextrpt = $lastprt + 1;

但是$lastrpt变量的值为0.我做错了什么?

4 个答案:

答案 0 :(得分:0)

我认为查询无效,因为您必须将reportno添加到group by子句或在聚合中使用它。请尝试以下方法。

SELECT pid, MAX(ReportNo) FROM cylinders GROUP BY pid ORDER BY reportno DESC LIMIT 1

答案 1 :(得分:0)

SELECT MAX(REPORTNO) FROM CYLINDERS;

答案 2 :(得分:0)

可以在没有GROUP BY的情况下完成,因为您需要最高reportno -

SELECT * FROM cylinders ORDER BY reportno DESC LIMIT 1

<强>更新

SELECT pid, MAX(reportno) max_reportno FROM cylinders GROUP BY pid ORDER BY max_reportno DESC LIMIT 1

答案 3 :(得分:0)

您可以在一个查询中添加一行并查找最高的reportno:

INSERT INTO cylinders (pid, reportno)
SELECT '13-2021', MAX(reportno) + 1 FROM cylinders
WHERE pid='13-2021';

您不应该使用mysql_query,不推荐使用它。请改用mysqli_query

编辑:根据评论更改