2011-09-26 85 views
1

我遇到了一些SQL問題,無法將我的頭部纏繞在解決方案上。SQL選擇具有最高ID的記錄

現在我基本上運行查詢是:

SELECT Q.ID, Q.STATUS, C.LASTNAME, C.FIRSTNAME, 
     C.POSTAL, C.PHONE 
FROM QUEUE Q 
LEFT OUTER JOIN CUSTOMER C ON Q.ID = C.APPID 
WHERE C.LASTNAME LIKE 'SMITH%' 

我有此查詢約200條記錄。我的問題是同一個人有多個發生。

Q.ID Q.STATUS C.LASTNAME C.FIRSTNAME ETC... 
1  A   SMITH  JOHN 
2  A   SMITH  RYAN 
3  B   SMITH  BRIAN 
100  A   SMITH  RYAN 
200  A   SMITH  RYAN 

什麼,我需要回到反而是

Q.ID Q.STATUS C.LASTNAME C.FIRSTNAME ETC... 
1  A   SMITH   JOHN 
3  B   SMITH   BRIAN 
200  A   SMITH   RYAN 

任何人都可以點我在正確的方向吧。我試過

SELECT WHATEVER FROM TABLE WHERE Q.ID IN (SELECT MAX(ID) FROM TABLE WHERE BLAH BLAH) 

這個工作時特別搜索「RYAN SMITH」。但是我需要顯示最高ID的SMITH的所有結果。

任何幫助表示讚賞。

乾杯

+1

SQL的哪種風味? MySQL,SLQ服務器,Oracle等? –

+0

那麼,對於給定的名字和姓氏,你想要最大的ID? – 2011-09-26 19:40:56

+0

猜猜這會有點幫助... Pervasive v9.5..and是的,他們可以通過姓氏或名字進行搜索 –

回答

1

我想你可以做類似下面

SELECT WHATEVER FROM TABLE 
WHERE Q.ID IN 
    (SELECT MAX(ID) FROM TABLE 
    WHERE BLAH...BLAH 
    GROUP BY C.FIRSTNAME, C.LASTNAME) 

希望這有助於!

0

你有沒有試過類似的東西?那麼它是不是一個真正的SQL語句,只是顯示這個想法

select * from Table where id in (
     select max(q.id) from Table group by c.lastname, c,firstname 
) 
0

假設有一個CUSTOMER.ID,我認爲我是對的,這裏有雲:

SELECT Q.ID, Q.STATUS, M.LASTNAME, M.FIRSTNAME, 
     M.POSTAL, M.PHONE 
FROM QUEUE Q 
LEFT OUTER JOIN (
    SELECT C2.ID CID, 
     MAX(C2.FIRSTNAME) FIRSTNAME, 
     MAX(C2.LASTNAME) LASTNAME, 
     MAX(C2.POSTAL) POSTAL, 
     MAX(C2.PHONE) PHONE, 
     MAX(Q2.ID) QID 
    FROM QUEUE Q2 
    LEFT OUTER JOIN CUSTOMER C2 ON Q2.ID = C.APPID 
    WHERE C2.LASTNAME LIKE 'SMITH%' 
    GROUP BY C2.ID 
) M ON (M.QID = Q.ID) 
0

如果我沒理解好,這應該工作:

注意:我已更改「內部連接」「左連接」,因爲您按C.LASTNAME篩選。所以我認爲左連接沒有太多的意義。