【发布时间】:2013-12-04 23:48:38
【问题描述】:
我对编程很陌生,似乎无法在这里找出我的错误。
我有一个日历设置,每次用户更改一天,我都会创建一个新行。通过这种方式记录所有更改(同样是新的,id 想象有更好的方法。)每一行都有一些显示的信息,但它的主要区别是一个月一天和一年。即 1 31 2013 年。
我需要获取该月每一天的最新唯一行。因此,如果我运行 2013 年 1 月 31 日的查询,我只需要返回最近创建的行 WHERE month= '1' AND 等。
我正在使用..
SELECT t.* FROM(SELECT * FROM calendar a
WHERE NOT EXISTS(SELECT * FROM calendar b
WHERE b.day = a.day AND b.lastaltered > a.lastaltered)) t
WHERE t.month = '12' AND t.year = '2013'
如果重要的话,来自 PHP。
现在,如果用户缓慢地进行更改,它可以正常工作。但是我发现如果有人很快就可以输入多天,最终有一个非常接近的时间戳(“lastaltered”),它不会在我当前的查询中返回该行。我通过将时间戳修改为以后的日期来测试它,然后它正常返回。我希望这能很好地解释我的问题。我仍然不清楚为什么更改时间戳会导致该行返回。
感谢您的宝贵时间! - 杰尔
【问题讨论】:
标签: php mysql sql calendar unique