Sql 日期时间相同的记录被错误地视为不同的事件

Sql 日期时间相同的记录被错误地视为不同的事件,sql,datetime,Sql,Datetime,我有一张捕获表,是在不同的摄像站拍摄的不同动物的时间戳照片。我想计算出每只动物对每个摄像站的访问频率,使用一列NewVisit来标记每次新访问的第一个记录 对于每次就诊记录,在StationID处可能有一个或多个相同AnimalID的记录VisitStart是每次访问期间最早捕获/记录的cDateTime。同样,VisitEnd是访问的最新捕获 我编写了以下查询,当记录的VisitStart与记录日期相同时,将记录标记为New Visit UPDATE Capture SET Captu

我有一张捕获表,是在不同的摄像站拍摄的不同动物的时间戳照片。我想计算出每只动物对每个摄像站的访问频率,使用一列NewVisit来标记每次新访问的第一个记录

对于每次就诊记录,在
StationID
处可能有一个或多个相同
AnimalID
的记录
VisitStart
是每次访问期间最早捕获/记录的
cDateTime
。同样,
VisitEnd
是访问的最新捕获

我编写了以下查询,当记录的
VisitStart
与记录日期相同时,将记录标记为
New Visit

UPDATE Capture
    SET Capture.NewVisit = Yes
WHERE (((Capture.VisitStart)=Capture.cDateTime) And
       ((Capture.SurveyID)=1) And
       ((Capture.SpeciesID)=1));
这种方法适用于大多数访问,但有时会有多条记录具有完全相同的时间戳(当相机连续拍摄3张照片时会出现这种情况)。在这种情况下,我的查询将所有3条记录标记为
NewVisit

有没有办法阻止这种情况的发生,通过指定如果有超过1条记录具有相同的
StationID
SpeciesID
AnimalID
cDateTime
,则
NewVisit
仅对其中一条记录有效,例如
CaptureID
最低的记录

下面是运行
NewVisit
查询后我的表的一个示例:

CaptureID   SurveyID    StationID   SpeciesID   AnimalID    TRANScDateTime       VisitStart             NewVisit
1307        1           5            1          5           15/07/2013 08:04:50  15/07/2013 08:04:50    TRUE
8172        1           5            1          2           15/07/2013 08:04:50  15/07/2013 08:04:50    TRUE
1306        1           5            1          2           15/07/2013 08:04:50  15/07/2013 08:04:50    TRUE
8173        1           5            1          2           15/07/2013 08:04:50  15/07/2013 08:04:50    TRUE
1308        1           5            1          2           15/07/2013 08:04:51  15/07/2013 08:04:50    FALSE
8174        1           5            1          5           15/07/2013 08:04:51  15/07/2013 08:04:50    FALSE
1309        1           5            1          5           15/07/2013 08:08:40  15/07/2013 08:04:50    FALSE
CaptureID
是主键

试试这个:

UPDATE TOP (1) Capture
    SET Capture.NewVisit = Yes
WHERE Capture.VisitStart=Capture.cDateTime
ORDER BY Capture.CaptureID,
         Capture.SurveyID,
         Capture.StationID,
         Capture.SpeciesID,
         Capture.AnimalID,
         Capture.TRANScDateTime;

你在使用什么数据库?请适当地标记查询。您的示例数据没有名为
cDateTime
SpeciesId
的字段。请修复此问题,使数据与您使用的查询相匹配。谷歌“更新排名1”。这个问题以前已经被问过很多次了。数据库名为Camera Base,MS Access 2010,可免费下载。欢迎使用StackOverflow。请给你的答案加上一些解释。只有代码的答案(有时)是好的,但代码+解释(大多数时候)会让答案更好。