插入MYSQL表的最后提交日期以供审阅

时间:2013-05-24 16:26:18

标签: mysql timestamp

我有一个名为'rating'的表,其中包含一个唯一的升序索引,ProductId是产品代码,rate1到rate5是每个产品获得客户1或5星评级的次数aveRate是每个产品的平均评级,lastSubDate应该是每个产品的最后一次评论提交时间的时间戳,但它当前是空的。

id  ProductId   rate1   rate2   rate3   rate4   rate5   aveRate     lastSubDate


18  9996637     0   0   0   0   1   5   0000-00-00 00:00:00
26  9996628     1   0   0   0   0   1   0000-00-00 00:00:00
34  9996618     0   0   0   1   0   4   0000-00-00 00:00:00
36  9996614     5   0   0   0   0   1   0000-00-00 00:00:00
48  9996592     5   0   1   0   3   3   0000-00-00 00:00:00
66  9996566     0   0   0   1   3   5   0000-00-00 00:00:00

在另一个表中,我调用了'last_rate_date',我有ProductId和产品在lastSubDate下的最后评级日期。在此表中,产品ID可以按示例显示多次,因为每行代表客户提交审核的时间。

ProductId   lastSubDate
9996665     2009-05-22 19:45:05
9996665     2009-08-06 11:30:07
9996665     2010-11-10 08:30:17
9996665     2011-06-10 09:15:47
9996665     2011-06-12 05:15:39

我的问题是我如何修改第一个表'评级',使用SQL在'lastSubDate'下使用第二个表'last_rate_date'来查看产品的最后一次查询以查找productId和日期ProductId可能会在此秒表中出现多次,并且日期不同。

这需要作为对第一个表的一次性表修改。这是完成的,我将修改脚本,将数据添加到评级表,以便在更新时始终添加时间戳。

2 个答案:

答案 0 :(得分:1)

您可以将时间戳与CURRENT_TIMESTAMP默认使用 或者你可以在插页上添加日期。

$date = date ("m-Y-d, H: i: s")

答案 1 :(得分:1)

您可以使用以下查询获取每个“ProductId”的最新日期:

Select ProductId, MAX(lastSubDate)
From last_rate_date
Group By ProductId

这将生成第二个表中出现的每个ProductId以及最新日期(使用MAX函数)。需要Group By子句来定义运行聚合的内容。

为了进一步解决您的问题,您可以将此Select语句插入到Update语句中,如下所示:

UPDATE ratings a
INNER JOIN (
    Select ProductId, MAX(lastSubDate) as finalLastSubDate
    From last_rate_date
    Group By ProductId ) b
ON a.ProductId = b.ProductId
SET a.lastSubDate = b.finalLastSubDate