我有一个名为"圆柱体"的MySQL表。其中两列是pid
和reportno
。
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。我做错了什么?
我不认为查询将工作,因为你必须添加reportno到组子句或在聚合中使用它。试试下面的方法。
SELECT pid, MAX(ReportNo) FROM cylinders GROUP BY pid ORDER BY reportno DESC LIMIT 1
SELECT MAX(REPORTNO) FROM CYLINDERS;
您可以添加一行并在一个查询中查找最高报告no:
INSERT INTO cylinders (pid, reportno)
SELECT '13-2021', MAX(reportno) + 1 FROM cylinders
WHERE pid='13-2021';
你不应该使用mysql_query
,它已经被弃用了。用mysqli_query
代替。
编辑:根据注释修改
可以不使用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