我需要获得某个专栏的最大价值。这是我上传的代码。
$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列中找到最大数字无关。我做错了什么?
答案 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允许这种类型的查询是一个错误/错误的功能。