2011-06-06 40 views
2

當前我想從相關表中選擇最新的值。所以,我有一個銷售表,可以有很多交易與單一銷售有關。我目前可以使用子查詢來獲取最近的銷售,如下所示,但速度很慢!獲取第一個或最後一個結果作爲連接的一部分

UPDATE Sales s 
SET LastTrans = (SELECT Stamp 
        FROM Transactions 
        WHERE SalesID = s.ID 
       ORDER BY Desc LIMIT 1) 
WHERE LastTrans IS NULL; 

有沒有辦法做這樣的事情使用連接,如果我千它可以採取年齡記錄做到這一點!

+1

如果您可以在SQL中添加運行'EXPLAIN'的輸出將很有用。 – 2011-06-06 23:20:15

+0

你也可以發佈你的表架構嗎? – 2011-06-06 23:28:35

+0

是否正確創建索引? – 2011-06-06 23:29:12

回答

1

你沒有說你的內部查詢是按什麼排序的,所以我認爲它是Stamp。

UPDATE Sales s INNER JOIN (
    SELECT SalesID, MAX(Stamp) AS MaxStamp FROM Transactions 
    GROUP BY SalesID 
) AS t ON s.ID = t.SalesID 
SET LastTrans = t.MaxStamp 
WHERE LastTrans IS NULL; 
相關問題