2017-05-20 97 views
0

我有一個有25,000個條目並且正在增長的表。在代碼中,有這一行MAX(expr)是否有限制

$result = sqlQuery("SELECT MAX(pid)+1 AS pid FROM patient_data"); 
$newpid = 1; 

if ($result['pid'] > 1) $newpid = $result['pid']; 

這條線從說,在10000

重複記錄這行代碼是應該做的是檢索的最後一個條目的數據庫返回一個錯誤對於pid列,然後下一行代碼添加一個以在表中創建下一個條目。

從我的研究MAX()是一個求和工具,而不是用於檢索輸入到表中的最後一個值的工具。 https://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_max

尋找關於如何正確使用它的一些說明。我似乎無法找到明確的答案。希望一些更有經驗的開發人員能夠幫助我指引正確的方向。

+0

'summming tool'?它是什麼總和? –

+5

自動增量爲您生成下一個數字。不需要這樣的事情。拿一個好的SQL教程。 –

+2

請注意。您正嘗試使用一種方法來分配'id'值,這些值在開發和測試過程中正常工作,然後在生產中失敗 - 用戶數據丟失。因爲:比賽條件。請[編輯]您的問題以顯示'SHOW CREATE TABLE patient_data'的輸出,然後注意您得到的答案。 –

回答

0

由於表已自動增加了ID列,並且在MySQL中每個表只允許使用其中一個。我不得不採取不同的方法。

決定以這種方式得到最後一條記錄。

$result = sqlQuery("SELECT id AS pid FROM patient_data ORDER BY id DESC LIMIT 1"); 
$newpid = 1; 

if ($result['pid'] > 1) $newpid = $result['pid'] + 1; //Changed by Sherwin 

setpid($newpid);