我有一个名为'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可能会在此秒表中出现多次,并且日期不同。
这需要作为对第一个表的一次性表修改。这是完成的,我将修改脚本,将数据添加到评级表,以便在更新时始终添加时间戳。
答案 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