Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to SELECT by MAX(date)?

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_entered` datetime NOT NULL default '1970-01-01 00:00:00',   `total_seconds` int(11) NOT NULL default '0',   `iphone_id` int(11) default '0',   PRIMARY KEY  (`report_id`),   KEY `computer_id` (`computer_id`),   KEY `iphone_id` (`iphone_id`) ) ENGINE=MyISAM AUTO_INCREMENT=120990 DEFAULT CHARSET=latin1 

I need a SELECT statement that will list the report_id per computer_id from latest entered date_entered, and I have no clue how to do that.

like image 652
poetter747 Avatar asked Oct 20 '11 12:10

poetter747


People also ask

Can I use Max on date in SQL?

Unfortunately, you cannot use the max(date) function with the where clause. Doing so will result in an error as shown: select * from employees where max(start_date); This is because SQL does not allow aggregate functions in the where clause.

Can we use Max on date?

MAX function works with “date” data types as well and it will return the maximum or the latest date from the table.

Where date is Max MySQL?

MySQL retrieves and displays DATE values in ' YYYY-MM-DD ' format. The supported range is '1000-01-01' to '9999-12-31' .


2 Answers

This should do it:

SELECT report_id, computer_id, date_entered FROM reports AS a WHERE date_entered = (     SELECT MAX(date_entered)     FROM reports AS b     WHERE a.report_id = b.report_id       AND a.computer_id = b.computer_id ) 
like image 138
bhamby Avatar answered Sep 23 '22 06:09

bhamby


Are you only wanting it to show the last date_entered, or to order by starting with the last_date entered?

SELECT report_id, computer_id, date_entered FROM reports GROUP BY computer_id ORDER BY date_entered DESC -- LIMIT 1 -- uncomment to only show the last date. 
like image 31
Tyler Ferraro Avatar answered Sep 24 '22 06:09

Tyler Ferraro