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

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

每个 PNR 只需要 1 条记录。

4

3 回答 3

1

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

SELECT MAX(booked_journey_info_id)
FROM myTbl GROUP BY PNR

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

于 2012-08-08T17:37:35.167 回答
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
于 2012-08-08T19:03:00.023 回答
0

Shredder 的答案更简单的是

select * from tablename group by PNR

这会根据(似乎)需要选择任意行。

于 2012-08-08T17:47:19.263 回答