MySQL列中最大的MySQL值

时间:2013-07-30 14:05:48

标签: php mysql

我需要获得某个专栏的最大价值。这是我上传的代码。

$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 个答案:

答案 0 :(得分:5)

如果您要查找表中的最大ID,则查询应为:

 SELECT max(ID) from sessions;

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

如果您想从ID最大的特定行获取完整数据,可以执行以下操作:

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

答案 3 :(得分:0)

  

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

问题是MAX()是一个聚合函数,它将根据您的GROUP BY子句返回每个组的最大ID 。因此,选择type, MAX(ID)然后GROUP BY Status没有意义。如果您想要每种类型的最大ID,则需要GROUP BY type

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