我有一个名为“柱面”的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.我做错了什么?
答案 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
。
编辑:根据评论更改