2012-08-08 49 views
1
booking id  booked_journey_info_id PNR 
1    1000      PNR5000 
1    1001      PNR5000 
1    1002      PNR7000 
1    1003      PNR7000 

在上表中我想檢索每個PNR的一條記錄。因此,對於以上情況,對於PNR-PNR5000查詢應檢索確切的一個預訂_旅程_信息(1000或10001),對於PNR-PNR7000查詢應該檢索確切的一個預訂_旅程信息_id(1002或10003)。需要SQL查詢才能從表中找到恰好一條記錄

我只需要每個PNR 1條記錄。

+2

請使用您正在使用的RDBMS進行標記。 – 2012-08-08 17:36:56

回答

1

如果它並不重要booked_journey_info_id您從小組得到的,你可以使用max()聚合函數摳最大ID:

SELECT MAX(booked_journey_info_id) 
FROM myTbl GROUP BY PNR 

基本上聚合函數講述從小組中拉哪個值。

+0

感謝您的查詢,但我不想在select子句中選擇PNR。沒有這個可以達到上述結果? – Nishant 2012-08-08 18:03:35

+0

是的,您只需將'PNR'離開選擇原因。我更新了我對雅的回答。 – 2012-08-08 18:14:09

0

Shredder's answer簡單是

select * from tablename group by PNR 

此選擇任意的列,如(貌似)所需的。

+0

在我使用的rdbms中,這會引發錯誤。 – 2012-08-08 17:55:45

+0

@碎片,是的,這取決於。如果可以的話,我會提出你對這個問題的評論。 – msh210 2012-08-08 18:16:14

0

這聽起來像你想要完整的行。

以下應該適用於任何數據庫。

select t.* 
from t join 
    (select pnr, max(booked_journey_info_id) as maxid 
     from t 
     group by pnr 
    ) tpnr 
    on tpnr.maxid = t.booked_journey_info_id