2010-06-15 89 views
4

我有點卡住了,無法讓我的頭繞着這個MySQL。這裏是我的刪節表我想查詢:爲列的每個不同值選擇一行,MySQL

打印(printID,EVENTID,printTime)

銷售(saleID,EVENTID,saleTime)

我希望得到最後打印時間對於每個事件,然後選擇銷售時間大於上次打印時間的具有該eventID的銷售ID。

我已經嘗試了很多方法,但我無法想象它。請幫忙!

回答

0

得到最後打印時間:

SELECT MAX(p.printTime), p.eventID FROM print p 

你可以使用這個在子查詢中得到你需要的東西:

SELECT s.saleID, s.eventID 
     FROM sales s 
INNER JOIN (SELECT MAX(p.printTime) AS lastPrintTime, p.eventID 
       FROM print p 
      GROUP BY p.eventID) print_time 
WHERE print_time.eventID = s.eventID 
    AND s.saleTime > print_time.lastPrintTime 

這是否幫助?

4
select s.saleID, s.eventID, s.saleTime, lp.LastPrintTime 
from (
    select eventID, max(printTime) as LastPrintTime 
    from print 
    group by eventID 
) lp 
inner join sales s on lp.eventID = s.eventID 
    and saleTime > lp.LastPrintTime 
+0

哇,打我衝了30數秒 – 2010-06-15 14:16:55

0

內部查詢:

SELECT * FROM sales AS s INNER JOIN 
(
    SELECT eventID, max(printTime) as maxPrintTime FROM [print] GROUP BY eID 
) as p ON p.eventID = s.eventIDAND s.saleTime > maxPrintTime