SQL Query获取Max Data

时间:2013-12-14 17:53:02

标签: mysql

表格信息:

Date, Hour, Object, Data1, Data2,............, Data20,........,Data50.

即每个对象每天都有24小时的数据。

现在我需要找出特定日期中所有对象的结果(一行),其中data20在24行中最大。提前谢谢......

像:

SELECT
    *
FROM
    `Table1`
WHERE
    `Date`='2013-12-08'
AND
    `object`='xxxx1'
AND
    `Data20` = (SELECT MAX(`Data20`) WHERE `Date` = '2013-12-08' AND `object`='xxxx1').

这将为对象xxxx1提供最大结果。但我需要所有对象的类似结果,即删除条件object ='xxxx1'。我该怎么办?

1 个答案:

答案 0 :(得分:0)

你可以使用LEFT JOIN,只保留不存在另一行的行,这些行具有相同的objectid,相同的日期和更大的data20值;

SELECT t1.* 
FROM table1 t1
LEFT JOIN table1 t2
  ON t1.object=t2.object
 AND t1.date = '2013-12-08'
 AND t2.date = '2013-12-08'
 AND t1.data20 < t2.data20
WHERE t2.date IS NULL;

...或其他选项是重写旧查询;

SELECT * 
FROM Table1 
WHERE date = '2013-12-08'
  AND DATA20=(SELECT MAX(Data20) 
              FROM Table1 t1
              WHERE date = '2013-12-08' 
                AND t1.object=table1.object)

http://sqlfiddle.com/#!2/c5218/7“&gt;测试两者的SQL小提琴。

如果netiher为您提供所需的性能,请将EXPLAIN输出添加到您的问题中,以便可以查看实际的索引使用情况。