我被指派在一个网站上进行进一步的开发,这个网站目前是便利店经理的网站,用于监控“一周的杂货袋”内的文章。这位前开发人员做了非常草率的工作,所以每当经理们想:“该死的!我需要编辑这篇文章,因为我刚刚输入错误的值”。他们必须输入一个同名的新文章,然后他们有两篇同名的文章,但价格和DATE_TIME(输入文章的日期和时间)不同。数据库看起来像这样:
________________________________________________
|___itemId___|___price___|______date_time______|
| 1 | 2.30 | 2012-01-01 00:00:00 |
| 2 | 1.50 | 2012-01-01 00:00:00 |
| 3 | 5.99 | 2012-01-01 00:00:00 |
| 4 | 0.99 | 2012-01-01 00:00:00 |
| 4 | 2.00 | 2012-01-01 00:10:00 |
| 4 | 4.99 | 2012-01-01 00:20:00 |
| 5 | 10.00 | 2012-01-01 00:00:00 |
| 6 | 39.99 | 2012-01-01 00:00:00 |
我正在处理 SELECT itemId,price,MAX(date_time)FROM myTable 以获取每个项目的最新行,如下所示:
________________________________________________
|___itemId___|___price___|______date_time______|
| 1 | 2.30 | 2012-01-01 00:00:00 |
| 2 | 1.50 | 2012-01-01 00:00:00 |
| 3 | 5.99 | 2012-01-01 00:00:00 |
| 4 | 4.99 | 2012-01-01 00:20:00 |
| 5 | 10.00 | 2012-01-01 00:00:00 |
| 6 | 39.99 | 2012-01-01 00:00:00 |
但我得到的是:
________________________________________________
|___itemId___|___price___|______date_time______|
| 4 | 4.99 | 2012-01-01 00:20:00 |
有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
添加GROUP BY
子句:
SELECT itemId, price, MAX(date_time)
FROM myTable
GROUP BY itemId
答案 1 :(得分:1)
尝试使用group by
或distinct
答案 2 :(得分:1)
SELECT t0.itemId,
t0.price,
t0.date_time
FROM myTable AS t0
LEFT JOIN myTable AS t1
ON t0.itemId = t1.itemId
AND t1.date_time > t0.date_time
WHERE t1.itemId IS NULL;