需要SQL Query才能从表中找到一条记录

时间:2012-08-08 17:32:35

标签: database

booking id     booked_journey_info_id   PNR
1              1000                     PNR5000
1              1001                     PNR5000
1              1002                     PNR7000
1              1003                     PNR7000

在上表中,我想为每个PNR检索一条记录。因此,对于上述情况,对于PNR - PNR5000查询应检索确切的一个registered_journey_info_id(1000或10001),对于PNR - PNR7000查询应检索确切的一个expected_journey_info_id(1002或10003)。

每个PNR我只需要1条记录。

3 个答案:

答案 0 :(得分:1)

如果从组中获得booked_journey_info_id无关紧要,您可以使用max()聚合函数来提取最大ID:

SELECT MAX(booked_journey_info_id)
FROM myTbl GROUP BY PNR

基本上,聚合函数告诉从组中提取哪个值。

答案 1 :(得分:0)

Shredder's answer简单

select * from tablename group by PNR

这会选择一个任意行,如(看似)所希望的那样。

答案 2 :(得分: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