2016-04-27 68 views
2

我有一個名爲tbservicecallallocation的表,下面是該表的數據。如何在WHERE子句中使用MySql MAX()

enter image description here

從以上數據我想,技術人員與他們的MAX AllocationTime。 下面的圖片顯示了我想要的結果。 enter image description here

請幫我寫下MySQL SELECT查詢以檢索上面的數據。

回答

5

有一個子查詢返回每個技術人員的最大AllocationTime。與結果加入:

select t1.* 
from tbservicecallallocation t1 
join (select TechnicianIDF, max(AllocationTime) as MAxAllocationTime 
     from tbservicecallallocation 
     group by TechnicianIDF) t2 
    on t1.TechnicianIDF = t2.TechnicianIDF 
    and t1.AllocationTime = t2.MAxAllocationTime 

末可以選擇添加ORDER BY條款:

ORDER BY AllocationStatus DESC 
+0

@ lad2025,兩排,T2將不包含任何重複。如果相同的技術人員使用相同的最大值(分配時間)兩次,則兩行都將被返回。 (就像你的查詢。) – jarlh

+0

:)是的,你是對的。第二個查詢將每個技術人員總是返回一行。 – lad2025

3

你可以使用子查詢來計算最大AllocationTime

SELECT * 
FROM tbservicecallallocation t1 
WHERE (TechnicianIDF,AllocationTime) IN 
     (SELECT TechnicianIDF, MAX(AllocationTime) AS AllocationTime 
     FROM tbservicecallallocation 
     GROUP BY TechnicianIDF) 
+1

'@ lad2025'。對不起,我只能批准一個答案。你的回答對我來說也是完美的...但是對於這個時候很抱歉..順便說一句,偉大的工作。 – Vijay

4

試試這個:

SELECT * 
FROM tbservicecallallocation t1 
WHERE NOT EXISTS(
    SELECT 'NEXT' 
    FROM tbservicecallallocation t2 
    WHERE t1.TechnicianIDF = t2.TechnicianIDF 
    AND t2.AllocationTime > t1.AllocationTime 
) 
+0

我喜歡不存在。有些人說運行MySQL時比聯接查詢慢,true或者不是? – jarlh

+0

對我來說,比其他言論更快。因爲其他解決方案在子查詢的複雜度大於NOT EXISTS的情況下使用JOIN和其他語句。所以在這種情況下,所有的答案是正確 –

+0

感謝您的信息。 (我從來沒有使用MySQK,我只讀過其他人對此的評論。) – jarlh

3

試試這個

select t1.* 
from tbservicecallallocation as t1 inner join 
(
select technicianidf, max(allocationtime) as allocationtime 
     from tbservicecallallocation 
     group by technicianidf 
) as t2 on t1.technicianidf=t2.technicianidf and t1.allocationtime=t2.allocationtime 
+0

與我的答案一樣,只需7分鐘。 – jarlh

+0

這可能是頁面刷新問題。當我打開頁面時,我沒有看到你的信息:) – Madhivanan

0

試試這個

SELECT * FROM tbservicecallallocation t1 
WHERE (TechnicianIDF,AllocationTime) IN 
    (SELECT TechnicianIDF, MAX(AllocationTime) AS AllocationTime 
    FROM tbservicecallallocation 
    GROUP BY TechnicianIDF) 
+1

與lad2025的答案相同,僅需27分鐘。 – jarlh

+0

哦okay.just現在我看到@jarlh – JYoThI