2013-07-30 39 views
1

我需要獲得某列的最大值。這是我的代碼,我得到了一個turorial。MySQL列中的最大值PHP

$query = "SELECT type, MAX(ID) FROM sessions GROUP BY Status"; 

$result = mysql_query($con, $query) or die(mysql_error()); 

// Print out result 
while($row = mysql_fetch_array($result)){ 
echo "The biggest session ID is " .$row['MAX(ID)']; 
echo "<br />"; 
} 

我需要得到表中最大的ID號。狀態只是另一列,我認爲這與查找ID列中的最大數字無關。我究竟做錯了什麼?

+9

[**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護[並且被正式棄用](http://j.mp/XqV7Lp)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 – Neal

+1

@關閉主題,但有沒有真正有理由選擇mysqli(over pdo)?它更值得一提嗎?新手應該使用pdo,這樣mysqli可以消失。 – sgroves

+1

@sgroves有**沒有錯誤**與'mysqli_ *' – Neal

回答

5

如果您正在尋找在表中最大的ID查詢應該是:

SELECT max(ID) from sessions; 

你GROUP BY列會給你最大的ID爲狀態的每一個獨特的價值,如果你是通過分組狀態以獲得任何有意義的結果,您也應該將其作爲選擇字段之一。

SELECT Status, max(ID) from sessions group by Status 
0

將您的MAX(ID)函數調用到查詢中的列名稱;

SELECT type, MAX(ID) AS max_id FROM sessions GROUP BY status 
0

如果你想從特定行擁有最大的id完整的數據,你可以這樣做:

$query = "SELECT type, MAX(ID) 
      FROM sessions 
      WHERE ID = MAX(ID) 
      GROUP BY Status"; 
0

狀態只是另一列,我認爲應該是無關找到ID列中的最大數字。

的問題是,MAX()是一個聚合函數將返回最大ID 每組按您GROUP BY條款。所以SELECT type, MAX(ID)然後GROUP BY Status沒有意義。如果你想要每個類型的最大ID,你想要GROUP BY type

除了在非常罕見的高級情況下可以濫用功能,選擇一個列(如type),然後GROUP BY其他東西(如Status)無效。事實上,大多數數據庫不允許你這樣做;有些人認爲它是一個bug /壞功能,mysql允許這種類型的查詢。