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

上記の表では、各 PNR に対して正確に 1 つのレコードを取得したいと考えています。したがって、上記の場合、PNR の場合 - PNR5000 クエリは正確な 1 つのbooked_journey_info_id (1000 または 10001) を取得する必要があり、PNR の場合 - PNR7000 クエリは正確な 1 つのbooked_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 * from tablename group by PNR

これにより、(一見)必要に応じて任意の行が選択されます。

于 2012-08-08T17:47:19.263 に答える
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 に答える