1

我需要获得某一列的最大值。这是我在 turorial 上得到的代码。

$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 列中查找最大数字无关的另一列。我究竟做错了什么?

4

4 回答 4

5

如果您正在查找表中的最大 id,则查询应该是:

 SELECT max(ID) from sessions;

您的按列分组将为状态的每个唯一值提供最大 id,如果您按状态分组以获得任何有意义的结果,您也应该将其作为选择字段之一。

 SELECT Status, max(ID) from sessions group by Status
于 2013-07-30T14:08:21.253 回答
0

如果要从具有最大 id 的特定行获取完整数据,可以执行以下操作:

 $query = "SELECT type, MAX(ID) 
           FROM sessions 
           WHERE ID = MAX(ID) 
           GROUP BY Status";
于 2013-07-30T14:11:23.907 回答
0

状态只是我认为与在 ID 列中查找最大数字无关的另一列。

问题是这MAX()是一个聚合函数,它将根据您的子句返回每个组的最大 ID。GROUP BY所以 SELECTtype, MAX(ID)然后GROUP BY Status. 如果你想要每种类型的最大 id,你想要GROUP BY type.

除了在非常罕见的可以滥用该功能的高级情况下,选择一列(如type)然后选择GROUP BY其他内容(如Status)是没有意义的。事实上,大多数数据库都不允许你这样做;有些人认为 mysql 完全允许这种类型的查询是一个错误/坏特性。

于 2013-07-30T14:12:10.553 回答
0

将您的 MAX(ID) 函数调用别名为查询中的列名;

SELECT type, MAX(ID) AS max_id FROM sessions GROUP BY status
于 2013-07-30T14:09:21.223 回答