有这样一个工资表
date   ¦ name  ¦ s(工资)
2008-01-01  ¦ aaa  ¦ 100
2008-04-01  ¦ aaa ¦ 80
2008-05-01 ¦ aaa ¦ 200
2008-01-01  ¦ bbb  ¦ 230
2008-02-01  ¦ bbb ¦ 300
2008-03-01 ¦ bbb  ¦ 40 
我想用一条语句找出每个人的最近一次工资。(不考虑添加最近一次的标志字段,仅通过时间来判断)

解决方案 »

  1.   

    最近一次工资:时间最大?
    select a.* from tt a inner join (
    select name,max(date) as ma from tt group by name) b
    on a.name=b.name and a.date=b.ma
      

  2.   

    我想得到的结果是
    date ¦ name ¦ s(工资)
    2008-05-01 ¦ aaa ¦ 200
    2008-03-01 ¦ bbb ¦ 40 
      

  3.   

    个人认为用 right join 好点
      

  4.   

    Try to look at the examples here.
    http://blog.chinaunix.net/u/29134/showart_465578.html
      

  5.   

    主要是group by 语句的作用我没有理解透
      

  6.   

    网上找的,大家一起看看
        
    Group By子句实例讲解    Group By子句主要指出对查询结果分组的依据,通常跟聚合函数(Sum, Max,Min等)一起使用.举个例子:比如我们可以使用SUM函数计算所有商店的销售总额,如果我们希望计算每一家商店各自的总销售额时该怎么办呢?要实现这一目的我们需要做两件事:首先,我们需要查询商店名称和销售额两个字段;然后,我们使用SQL语言的GROUP BY命令将销售额按照不同的商店进行分组,从而计算出不同商店的销售总额。GROUP BY命令的语法格式为:SELECT "column_name1",SUM("column_name2") FROM "table_name" GROUP BY "column_name1"    例    “Sales”表中的原始数据:    Company       Amount    W3Schools    5500
        IBM         4500
        W3Schools    7100    按照Company字段进行分组,求出每个Company的Amout的合计:    SELECT Company,SUM(Amount) FROM Sales GROUP BY Company    返回结果:    Company       SUM(Amount)    W3Schools     12600
        IBM         4500    小注:    GROUP BY关键字一般应用于同时查询多个字段并对字段进行算术运算的SQL命令中。    Having子句    Having子句跟Where类似,就是专门同Group By一起使用,指出在Group By中的条件。   select Company,sum(Amount) from Sales group by Company having count(Company)>1    W3Schools   12600    小结:    Group By语句使用中一般必须有聚合函数,对数据进行分类.Having就是专门用来指定Group By子句中的条件的.
      

  7.   

    我以前总认为sql的计算方向是从前向后,所以以前考虑类似查询语句总以为是先选择最大值才进行分组,也就没有进行测试,太后悔了。
      

  8.   

    推荐你看一下这些帮助
    SQL 1992
    MySQL 5.1 Reference Manual
    ActiveX Data Objects 2.5 Reference 下载
    数据库系统概论PPT.
        [align=center]====  ====
    [/align]
    .
    贴子分数<20:对自已的问题不予重视。
    贴子大量未结:对别人的回答不予尊重。
    .
      

  9.   

    这样行吗?select x.date,x.name from salary x,salary y 
    where(x.name=y.name and (x.date=(select max(date) from y where y.name=x.name)))不够专业,请高手分析指正!