什么啊?你的表名这么复杂??!!! 我举个简单的例子算了:select * from tablename order by yourdatefield desc limit 2,1就行了,记录就是第二大日期(yourdatefield)的那条记录

解决方案 »

  1.   

    不行啊。nne998(上上下下左右左右BABA),我一运行起来就说limit附近有语法错误。我用的是
    SQL2000,不知是否能说得明白点??
      

  2.   

    你的表太复杂 ,我用个简单的表来说吧
    比如表名是table_name  ,日期字段是fdate
    select t1.fdate from 
    (select distinct fdate from table_name) t1,
    (select distinct fdate from table_name) t2
    where t1.fdate<t2.fdate 
    group by t1.fdate
    having count(t2.fdate)=1
      

  3.   

    to gddonkey(笨笨驴):啊??不会吧!!!我的语句肯定行的啊:
    我用
    select * from table_log order by log_time desc limit 2,1   //在我的表中测试过了1.请检查你的 yourdatefield 是否 datetime类型啊?
    2.先不要join,简单先试试一张表啦?
      

  4.   

    to nne998,不行啊。我就是用一张表来测试的。总是说limit附近有语法错误。
    datefield肯定是datetime类型的。
    可以问一下你用的是什么数据库吗?
      

  5.   

    TO nne998,怪不得呢!SQL2000里面没有LIMIT关键字。
    TO icevi(按钮工厂) 你的语句可以运行,但是最后出来的只有一个唯一日期,我需要的是每
                       一个HM对应自己的第二大的日期。所以一定要GROUP BY HM。
      

  6.   

    那就这样写吧:
    select t1.hm,t1.fdate from 
    (select distinct hm, fdate from table_name) t1,
    (select distinct hm,fdate from table_name) t2
    where t1.fdate<t2.fdate and t1.hm=t2.hm
    group by t1.hm,t1.fdate
    having count(t2.fdate)=1
      

  7.   

    TO:icevi(按钮工厂),你的语句或许是可行的。但是我运行时弹出了一个窗口。上面是:
    [Microsoft][ODBC SQL Server Driver]超时已过期。
    可以问一下你用的是什么数据库吗?
      

  8.   

    这个语句是慢点,我用的SQL 2000,你改一下超时设置吧
      

  9.   

    select hx1.id, hx1.hm, hx1.czrq 
        from hx1 
            inner join yjfyh on 
                hx1.HM = YJFYH.HM and 
                hx1.czrq=(select max(czrq) from hx1 where czrq<(select max(czrq) from hx1))
      

  10.   

    TO icevi(按钮工厂) 多谢你了。可以得出结果了。虽然用了将近十分钟的时间,但是毕竟还是得到了结果。但是还有两个问题想请教你:
    1、在你的语句中having count(t2.fdate)=1是什么意思??
    2、第二大的日期取出来了。那么第三大的日期有办法取吗?
      

  11.   

    select dist top 2 min(date) as 第二大日期 from table order date desc如果你要第三大的就 Top 3快加分!!!!!!!!!!!!!!!!!!!!!!!!!
      

  12.   

    意思是在同一组数中只有1个比它自己大,那它就是排第2了.
    这个语句是很慢,要是觉得慢,可能把所有日期排序后生成一个recordset   ,然后找第2个记录更快些.你不必坚持一定要用一个SQL语句得出结果.
      

  13.   

    第三大就把having count(t2.fdate)=1改成having count(t2.fdate)=2, 依此类推.
      

  14.   

    这个语句之所以慢,是因为两个表的关连不是用等号,是用不等号:
    where t1.fdate<t2.fdate
    这样的关联是很慢的.
    哪位有更快的办法,请一起来讨论一下.
      

  15.   

    To:icevi(按钮工厂),不好意思,这两天公司的网坏了,没能上来。多谢你了。解释得很详细。
    回头马上加分。