How to SELECT by MAX(date)?

前端 未结 12 1595
独厮守ぢ
独厮守ぢ 2020-12-03 02:49

This is the table structure:

CREATE TABLE `reports` (
  `report_id` int(11) NOT NULL auto_increment,
  `computer_id` int(11) NOT NULL default \'0\',
  `date_e         


        
12条回答
  •  臣服心动
    2020-12-03 03:26

    This is a very old question but I came here due to the same issue, so I am leaving this here to help any others.

    I was trying to optimize the query because it was taking over 5 minutes to query the DB due to the amount of data. My query was similar to the accepted answer's query. Pablo's comment pushed me in the right direction and my 5 minute query became 0.016 seconds. So to help any others that are having very long query times try using an uncorrelated subquery.

    The example for the OP would be:

    SELECT 
        a.report_id, 
        a.computer_id, 
        a.date_entered
    FROM reports AS a
        JOIN (
            SELECT report_id, computer_id, MAX(date_entered) as max_date_entered
            FROM reports
            GROUP BY report_id, computer_id
        ) as b
    WHERE a.report_id = b.report_id
        AND a.computer_id = b.computer_id
        AND a.date_entered = b.max_date_entered
    

    Thank you Pablo for the comment. You saved me big time!

提交回复
热议问题