我有两个表,然后我想通过查询加入。
result
保存实际输入的结果
user_tracking
跟踪工作的接受和完成,用户可以稍后取消并再次接受工作。
SELECT *
from
svr1.result r,
svr1.user_tracking u
where
r.uid = u.user_id and r.tid = u.post1
and u.function_name = '7' #7 == accept work
and r.insert_time > '2015-09-23 00:00:00' and r.insert_time < '2015-10-03 00:00:00'
and u.track_time > '2015-09-23 00:00:00' and u.track_time < '2015-10-03 00:00:00'
我的 result
表在我想跟踪的时间段内有 1785 条记录
但上面的查询返回 1990 条记录。我想知道如何过滤以获得仅用户接受的最新日期。
在 result
表中:uid,INT, tid,INT, result,VARCHAR 和 insert_time,TIMESTAMP
在 user_tracking
表中:user_id,INT, post1,VARCHAR function_name,VARCHAR, result,VARCHAR and track_time,TIMESTAMP
user_tracking函数示例记录,在这个查询中track时间会改变,其余保持不变。
最佳答案
在所需日期使用 GROUP BY
命令和 MAX()
,这将选择所有选项的最新日期(假设所有其他列都相同).代码如下(不幸的是因为 MAX
需要声明所有列):
SELECT r.uid,
r.tid,
r.result,
r.insert_time,
u.user_id,
u.post1,
u.function_name,
u.result,
MAX(track_time)
FROM
svr1.result r,
svr1.user_tracking u
WHERE
r.uid = u.user_id AND r.tid = u.post1
AND u.function_name = '7' #7 == accept work
AND r.insert_time > '2015-09-23 00:00:00' AND r.insert_time < '2015-10-03 00:00:00'
AND u.track_time > '2015-09-23 00:00:00' AND u.track_time < '2015-10-03 00:00:00'
GROUP BY
r.uid,
r.tid
关于mysql - 从两个表中选择时如何按日期获取最新结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40836972/