2015-05-27 58 views
1

我有一个名为“cylinders”的MySQL表。其中两列是pidreportno查找MySQL组的最大值并将其分配给变量

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

您的相同数据中的预期结果是什么? –

+0

请注意,对于MyISAM表格,您可以将两个列都定义为化合物的组分,即auto_incrementing PK。然后,MySQL将为您完成剩下的工作。 – Strawberry

回答

0

我不认为查询将起作用,因为您必须将reportno添加到group by子句或将它用于聚合。尝试以下操作。

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

好的谢谢!如何从结果2列数组中检索到reportno的特定pid? – JohnB

0
SELECT MAX(REPORTNO) FROM CYLINDERS; 
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 
+0

是的,但我只需要一个特定pid的最高气缸,比如13-2021。 – JohnB

+0

检查更新。 –

0

您可以添加一行,并仰望一个查询中最高的报告号码:

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

您不应该使用mysql_query,它已被弃用。改为使用mysqli_query

编辑:更改基于评论

相关问题