2009-12-04 44 views
0

需要选择最后一个InvoiceID和相应的字段。整个sql包含几个内部连接。SQL - 选择最大ID字段

SELECT max(InvoiceID), 
     InvoiceEndDate 
    FROM Invoices 
WHERE TransactionOrderItemID = '000831' 

现在,我正在InvoiceID,并有再次读取该InvoiceEndDate。

有没有这样做的有效方式?

回答

4
SELECT InvoiceID, InvoiceEndDate 
FROM Invoices 
WHERE TransactionOrderItemID='000831' 
ORDER BY InvoiceID DESC 
LIMIT 1 
+0

很高兴我看到了。如果这样做,它比我建议的方式更容易... – Kendrick 2009-12-04 18:11:42

+2

OP说MySQL,所以限制1将需要在顺序之后,而不是选择列表之前的TOP 1。 – 2009-12-04 18:14:02

+0

@martin:good catch =) – 2009-12-04 18:18:36

0
SELECT InvoiceID, InvoiceEndDate 
FROM Invoices INV 
WHERE TransactionOrderItemID='000831' 
    AND INV.InvoiceID = (SELECT MAX(SUB.InvoiceID) 
    FROM Invoices SUB WHERE SUB.TransactionOrderItemID='000831');