2016-04-20 6 views
0

"IDKLIENT"というClient-IDが複数出現しています。私はこのコードを使用しMysql:すべてのIDの最後の出現を選択してください

1|z 
2|z 

::私は次のようになり

1|x 2|x 
1|y 2|y 
1|z 2|z 

のように、IDごとにIDKLIENTの最後の出現を選択したい

select a.* 
     from test a inner join 
     (select Name_Kl, max(IDKLIENT) as maxid from test group by IDKLIENT) as b on a.IDKLIENT = b.maxid 

この方法は、私が唯一の取得します

と同じ出力です。

select a.*

ご協力いただければ幸いです!

ありがとうございます。

編集:テーブルにはタイムスタンプもあります。ですから、IDごとに最大(タイムスタンプ)が選択されていれば、私は満足しています。

+0

は「最後の」定義します。 RDBMSテーブル内の行には順序がありません – Strawberry

+0

「最後」はIDの最大(タイムスタンプ)になります。 – rickquan

+0

何のタイムスタンプですか?あなたのテーブルには数字と文字しか見えません。 – Ivar

答えて

0

を試してみてください。それはあなたが必要なものである場合は、maxを使用してidklientでアルファベット順に並べ替えることができます。

select id, max(idklient) from test group by id; 

代わりに、あなたはそれが挿入順序でソートしたい、私はあなたがしてグループ化を行うために使用することができますAUTO_INCREMENTフィールドを持つことをお勧めしたい場合。これはあなたの編集に対応して、タイムスタンプ

を挿入するよりも良い仕事かもしれません:

select id, max(timestamp) from test group by id; 

これはgroup-by文の典型的な例です

+0

は私のために2017年に働いていません – pythonian29033

0

グループによって変更されていると思います。

は、私はあなたがidklientためのアルファベット順に最大の価値を見つけるために、idでグループに見ていると信じて、期待される出力から判断すると、このよう

select a.* 
from test a 
    inner join 
     (select Name_Kl, max(IDKLIENT) as maxid 
     from test 
     group by Name_Kl 
     ) as b 
      on a.IDKLIENT = b.maxid 
関連する問題