table a 记录
name sj          rq
赵  13546875987   2009-07-07
赵  13546875987   2009-07-08
赵  13546875987   2009-07-09
李  13546875988   2009-07-10
李  13546875988   2009-07-11
李  13546875988   2009-07-12
.
.
.要求查询得到 (每个name的,按日期排最后一条记录)
赵  13546875987   2009-07-09
李  13546875988   2009-07-12

解决方案 »

  1.   

    select * from tb_name a where not exists (select 1 from tb_name b where b.name=a.name and b.rq>a.rq)
      

  2.   

     或
    select * from tb_name a where a.rq=(select max(rq) from tb_name b where b.name=a.name)
      

  3.   

    或:
    select * from tb_name a,(select name,max(rq) as rq from tb_name group by name) b where b.name=a.name and b.rq=a.rq
      

  4.   

    sql server是可以这样写,可是mysql不支持 exists , where rq= (select )这样的字查询的。
      

  5.   

    手上没有 3.23 的版本。 不过 exists 应该可以试一下。
      

  6.   

    不好意思,各位,3.23不支这些语法,我升级成5.0了,可以写了,现在还有一个问题,同一日期,同一name可能有多条记录,id name sj          rq            lx
    1 赵  13546875987  2009-07-07    a
    2 赵  13546875987  2009-07-08    a
    4 赵  13546875987  2009-07-09    a
    3 赵  13546875987  2009-07-09    b
    5 李  13546875988  2009-07-10    a
    6 李  13546875988  2009-07-11    a
    7 李  13546875988  2009-07-12    a
    8 李  13546875988  2009-07-12    b要求查询得到 (每个name的,按日期排最后一条记录,同一日期取id最后一条) 
    3 赵  13546875987  2009-07-09    b
    8 李  13546875988  2009-07-12    b
    (id是自增,不一定是日期大的,id就大,人为录时,有可能先入后面的时间,在入之前的时间,所以要先按日期排,同一日期在由id排)
    查询语句怎么写 套两个 exists?