1

我被指派在一个网站上做进一步的开发,目前,该网站是便利店经理监控“本周杂货袋”中的物品的网站。这位前开发人员的工作非常草率,所以每当经理们想:“该死!我需要编辑这篇文章,因为我刚刚输入了错误的值”。他们必须输入同名的新文章,然后他们有两篇同名但价格不同的文章和 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 |

有人可以帮我解决这个问题吗?

4

3 回答 3

2

添加一个GROUP BY子句:

SELECT itemId, price, MAX(date_time)
FROM myTable 
GROUP BY itemId
于 2012-05-15T09:01:35.657 回答
1

尝试使用group bydistinct

于 2012-05-15T09:03:49.480 回答
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; 
于 2012-05-15T09:13:21.547 回答