0

私は次のようなテーブルを持っています

id name tid seq aname ds
1  a     xy  10  G     E
1  a     xz  20  G     E
1  a     az  30  G     E
1  b     wq  10  G     E
1  b     as  20  G     E
2  c     qw  10  G     E
2  c     sd  20  G     E  
1  a     fg  34  S     F

今私は次のようにo/pが欲しい

id name tid seq  
1  a    az  30

1  b    as  20       
2  c    sd  20

私の質問は次のとおりです

select id,name,tid,max(seq) 
from table 
group by id,name where aname='G' and ds='E'; 

しかし、iamはtidフィールドでnull値を取得しています。どこで問題が発生しましたか?助けてください。ありがとうございます。

4

1 に答える 1

0

これを行う 1 つの方法は、およびseqのすべてのグループの最大値を取得するサブクエリを使用することです。サブクエリの結果は、 、、およびの3 つの列で一致する場合、テーブル自体に結合され、の正しい値が得られます。IDNameIDNameseqtid

SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
            SELECT  id, name, max(seq) max_seq
            FROM    tableName
            GROUP   BY ID,name 
        ) b ON a.ID = b.ID AND
                a.seq = b.max_seq AND
                a.name = b.name

出力

╔════╦══════╦═════╦═════╗
║ ID ║ NAME ║ TID ║ SEQ ║
╠════╬══════╬═════╬═════╣
║  1 ║ a    ║ az  ║  30 ║
║  1 ║ b    ║ as  ║  20 ║
║  2 ║ c    ║ sd  ║  20 ║
╚════╩══════╩═════╩═════╝
于 2013-03-20T09:22:22.457 に答える