MySQL使用MAX()和WHERE子句

时间:2012-04-01 17:04:33

标签: mysql sql aggregate-functions

我在使用PHP创建mySQL查询时遇到一些问题。我们有一个名为data_instant的表,其中输入了一系列累积观察结果,称为Count_Qty,我们希望从新观察中提取前一个以计算增加量。

$result = mysql_query("SELECT *, 
MAX(Record_Time) 
FROM data_instant 
WHERE Node_ID='$nodeID' AND Type='$type';

$row = mysql_fetch_array ($result);

基本上我希望返回最大的Record_Time行,但它只是收到的第一个实例。之前的观察具有最高的Record_Time(Unix日期戳),所以我不清楚为什么这不起作用......

4 个答案:

答案 0 :(得分:14)

如果您想获取具有最新Record_Time值的行,只需按Record_Time的降序对行进行排序并获取最上一行:

SELECT *
FROM data_instant
WHERE Node_ID='$nodeID'
  AND Type='$type'
ORDER BY Record_Time DESC
LIMIT 1;

答案 1 :(得分:1)

where子句选择与Node_ID ='$ nodeID'和Type ='$ type'匹配的所有行。

对于每一行,它将返回所有字段和最长记录时间。

如果您希望行具有最长记录时间,则需要将其添加到where子句中:

SELECT * 
FROM data_instant 
WHERE Node_ID='$nodeID' AND Type='$type' 
and Record_Time = (select MAX(Record_Time) 
        FROM data_instant 
        WHERE Node_ID='$nodeID' 
        AND Type='$type')

答案 2 :(得分:0)

如果您返回的MAX超过MAX,则应将GROUP BY添加到语句中以确保正确聚合:

SELECT columnA,
    columnB, 
    MAX(Record_Time) 
FROM data_instant 
WHERE Node_ID='$nodeID' AND Type='$type'
GROUP BY columnA, columnB;

答案 3 :(得分:0)

  

我希望返回最大的Record_Time行

然后你应该问这个专栏:

SELECT MAX(Record_Time) FROM data_instant 
WHERE Node_ID='$nodeID' AND Type='$type'

这将返回指定node_id的max record_time并输入。