我有一个存储汽车价格的表,其结构如下:
+-----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| model | varchar(255) | YES | | NULL | |
| make | varchar(255) | YES | | NULL | |
| year | varchar(255) | YES | | NULL | |
| avg_price | decimal(8,2) | YES | | NULL | |
| median_price | decimal(8,2) | YES | | NULL | |
| created_at | datetime | YES | | NULL | |
| updated_at | datetime | YES | | NULL | |
+-----------------+--------------+------+-----+---------+----------------+
给定年份的数据可能会在不同时间插入。
For example model 'Honda', make 'Accord' might have results like:
+------+-----------+--------------+--------+---------------------+
| year | avg_price | median_price | model | created_at |
+------+-----------+--------------+--------+---------------------+
| 1992 | 2431.29 | 2000.00 | accord | 2012-02-23 17:31:41 |
| 1993 | 2609.13 | 2195.00 | accord | 2012-02-23 17:31:44 |
| 1994 | 2858.81 | 2400.00 | accord | 2012-02-23 17:31:44 |
| 2000 | 4771.99 | 4450.00 | accord | 2012-02-23 17:31:46 |
| 2001 | 5260.16 | 5000.00 | accord | 2012-02-23 17:31:46 |
| 2000 | 4860.19 | 4795.00 | accord | 2012-08-15 06:09:52 |
| 2001 | 5071.49 | 4990.00 | accord | 2012-08-15 06:09:52 |
| 2002 | 5872.80 | 5795.00 | accord | 2012-08-15 06:09:52 |
| 2003 | 7521.44 | 7950.00 | accord | 2012-08-15 06:09:52 |
| 2004 | 8348.19 | 8495.00 | accord | 2012-08-15 06:09:52 |
我想检索所有本田雅阁汽车制造年份的最新数据。
所以在上面的示例中,我想从 2012-08-15 06:09:52 检索 2000、2001、2002、2003、2004 年的数据 但较早的年份将从 2012-02-23 17:31:41 开始
select year,avg_price,median_price,model,created_at
from car_prices
where make='honda' and model= 'accord' group by year asc
上述查询获取每年的不同数据,但不是每年插入的最后一条记录。
关于如何获取每年和最新的不同数据有什么想法吗?
最佳答案
SELECT p.*
FROM car_prices p
JOIN (SELECT year, MAX(created_at) latest
FROM car_prices
WHERE make = 'honda' AND model = 'accord'
GROUP BY year) mp
ON p.year = mp.year AND p.created_at = mp.latest
WHERE p.make = 'honda' AND p.model = 'accord'
关于mysql - 根据列选择最后n条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12067814/