我有一个表,其中包含teams
的列表,每个team
都有一个名为update_at
的字段,用于指定上次更新的datetime
。
如果需要更新,我需要检查每个team
。首先,我创建了一个查询,例如:
SELECT update_at FROM team WHERE id = 67
然后将update_at
与7(这是一次更新之间的最大天数)进行比较。
该解决方案非常昂贵,因为如果我有50个teams
,则需要打开50个连接并执行50个query
。
所以我虽然这样:
SELECT id FROM `team` WHERE (id = 67 AND update_at > DATE_SUB(SYSDATE(), Interval 7 Day))
AND id = 68 AND update_at > DATE_SUB(SYSDATE(), Interval 7 Day))
这里的第一个问题是冗余,我不是sql
专家,所以我不知道是否有可能避免每次DATE_SUB(SYSDATE(), Interval 7 Day)
都添加。
第二个问题是查询不返回任何内容。
表结构如下:
id | name | update_at
67 Tirana 2019-03-06 11:00:12
68 Partizan 2019-03-06 11:02:04
69 Lusitanos 2019-03-14 09:00:40
预期结果为67, 68
,因为update_at
距当前日期不到7天。记录69仅在今天(2019-03-16)的两天前更新。
更新:
重复项不符合所有问题要求。因为我需要返回从当前日期起少于7天的每个具有update_at字段的记录的ID,所以不要将所有字段与另一个问题进行比较–
答案 0 :(得分:1)
在7天前检查一下update_at>,而mysql没有sysdate,因此您使用CURDATE()
SELECT id FROM `team` WHERE update_at <= DATE_SUB(CURDATE(), Interval 7 Day)`
答案 1 :(得分:1)
如果我正确理解这一点,则您不希望知道表中的哪些ID没有最新更新。而是您有一组要获取此信息的ID。
这就是:
first-login-flow