2016-11-28 65 views
3

我有兩個表,我想加入一個查詢。如何從兩張表格中選擇最新的結果?

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,結果,VARCHAR和insert_time,TIMESTAMP

user_tracking

表:USER_ID,INT,POST1,VARCHAR函數名,VARCHAR,結果,VARCHAR和track_time,TIMESTAMP

user_tracking函數示例記錄,在此查詢中,軌道時間將會改變,其餘的將保持不變。

enter image description here

+0

可以添加樣本數據和預期的結果 –

+0

什麼時,你說用戶所接受的最晚日期是否意味着每隔一列是的'track_time'除外? – AER

+0

@AER yea。我認爲你的答案是正確的解決方案。我需要首先驗證我的記錄 – Desmond

回答

2

使用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  
+0

謝謝@AER,看起來像這就是我要找的! – Desmond

+0

@Desmond請讓我知道是否需要改變它的任何細微差別,爲你工作,我會更新答案 – AER

+0

@Desmond And .... – AER

相關問題