select * from table 
having xlsj=max(xlsj)
group by name

解决方案 »

  1.   

    select * from table 
    having xlsj=max(xlsj)
    group by name
      

  2.   

    select * from table 
    having xlsj=max(xlsj)
    group by name
      

  3.   

    select name, xl, max(xlsj) as nxlsj from table1 group by name
      

  4.   

    这样的SQL写起来有一定难度。
    不过你可以换个思路。
    法1、在表中加一个字段,用于标志此记录是当前或者是历史;
    法2、写存储过程。一个人一个人地去算。
      

  5.   

    select * from tablename a
    where xlsj=(select max(xlsj) from tablename where name=a.name
    )
      

  6.   

    Snakeguo说的方法就可以实现了,不用那样复杂。select name, xl, max(xlsj) as nxlsj from table1 group by name
      

  7.   

    Snakeguo说的方法估计不行,你得建一个字段0表小学,1表初中……这样!
    或者这样也可以,比较同一人的取学历的最后时间
      

  8.   

    select * from tablename
    where in
    slect max(xlsj) from tablename
      

  9.   

    时间类型是可以直接比较大小的,最大值即为最新的
    select * from tablename
    where (name='a')and
    (xlsj=(select max(xlsj) from tablename where name='a'))