I have table data which looks like this
id | keyword | count | date
1 | ipod | 200 | 2009-08-02
2 | ipod | 250 | 2009-09-01
3 | ipod | 150 | 2009-09-04
4 | ipod | NULL | 2009-09-07
Now what I am after is getting the count of the row which has the newest date but has a not null count. In which case row 3 with count 150.)
eg
SELECT `keyword`, `count` , max( `date` )
FROM `keywords`
WHERE keyword = "ipod"
AND `count` IS NOT NULL
GROUP BY keyword
This returned the right date but not the right count (returned 200). I also tried doing a left join on it s self.
SELECT `t1`.`keyword` , `t2`.`count` , max( `t1`.`id` )
FROM `keywords` `t1`
LEFT JOIN `keywords` `t2` ON `t1`.`id` = `t2`.`id`
WHERE `t1`.`keyword` = ipod
AND `t1`.`count` IS NOT NULL
GROUP BY `t1`.`keyword`
And this did get the max id but it didn t left-join onto that like I hoped and returned only 200.
Help?