2015-05-27 103 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

編輯:更改基於評論

相關問題