通过为非空字段提供空值来进行分组

时间:2013-03-20 09:20:20

标签: mysql sql greatest-n-per-group

我有一张表如下

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'; 

但我在tid字段中获取空值。我哪里出错?请帮忙。谢谢

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是使用子查询,该子查询为seqID的每个组获取最大Name。然后,子查询的结果将连接回表本身,前提是它匹配三列:IDNameseq,以便为您提供正确的值{{1 }}

tid

输出

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