I have a table with a multi-column primary key (city/state/date) and many more columns of data. I\'m looking to get the latest data for each city/state. How do I do that cleanly
MySQL supports tuple comparisons:
SELECT * FROM data WHERE
(state, city, date) IN (
('CA', 'San Francisco', '2013-09-01'),
('CA', 'Los Angeles', '2013-08-01'),
('NY', 'New York', '2013-10-01'));
I think this should do the trick for you:
select
*
from
data t1
natural join
(
select
city,
state,
max(date) as date
from
data
group by
city,
state
) t2;