更新:process_date是日期时间,因此它与队列和用户不匹配,这就是为什么我需要获取前一个队列的进程日期然后是当前队列然后获取在该日期范围内处理的用户
答案 0 :(得分:1)
试试这个
SELECT
*
FROM Users
WHERE EXISTS
(
SELECT
1
FROM [Queue]
WHERE [Queue].process_date = Users.process_date
AND [Queue].QueueId = 1
)
这将返回为queue_id 1处理的所有用户。
注意强>: 建议不要根据某些日期连接表来检索记录。所以,如果可能的话,你应该向用户添加一个队列ID'表并使用队列表创建外键约束。然后更新每个用户的队列ID,因为时间ca变化(以毫秒为单位)也可以导致错过匹配
答案 1 :(得分:0)
如果没有细节可以处理任何答案,那么同样也会“细节化”。 e.g。
select * from users u
inner join queue q on u.process_date = q.process_date
或者如果存在某种形式的延迟,那么可能需要一个小的时间范围:例如
select * from users u
inner join queue q on u.process_date between q.process_date and dateadd(minute,1,q.process_date)
答案 2 :(得分:0)
process_date字段是日期时间,因此它不匹配,这就是我没有加入的原因,我所做的是从队列中选择先前的process_date,然后选择当前队列的process_date,然后选择用户在这两个日期之间使用process_date