我的主要目标是获取所有数据的最后更新时间。
详细说明: 我有一张桌子 - 小组
groupId
groupName
timeUpdated (timestamp - on update)
另一个表 - 用户
userId
timeUpdated (timestamp - on update)
groupId (FK to Groups)
ADD CONSTRAINT `users_ibfk_3` FOREIGN KEY (`groupId`) REFERENCES `groups` (`groupId`) ON DELETE CASCADE ON UPDATE CASCADE,
当我更新users表时,我希望我的相对组行能够使用新的时间戳更新。
我认为它应该有用,不幸的是它无法运作
任何想法/我做错了什么?
谢谢, Omri
答案 0 :(得分:0)
您试图以两种不同的方式使用timeUpdated
表格中的Groups
列。这可能不是你想要做的。
相反,让Groups
表保留更新Groups
表的更新时间戳,以及记录Users
表的最新更新的Users
表。 / p>
如果您要查找“组”表中最后一次更改任何会员信息,您可以这样查询:
select
g.groupid,
g.groupname,
g.timeupdated as grouplastchanged,
max(u.timeupdated) as lastuserchanged
from
groups as g
inner join
users as u
on u.groupId = g.groupId
group by
g.groupid,
g.groupname,
g.timeupdated;
或者,如果你想变得非常喜欢,你可以这样做:
select
g.groupid,
g.groupname,
greatest(g.timeupdated, max(u.timeupdated)) as lastmodified
from
groups as g
inner join
users as u
on u.groupId = g.groupId
group by
g.groupid,
g.groupname;
如果您期望有大量用户和群组,我建议您为groupid
表格中的Users
列编制索引。