先看代码SELECT MAX(logTime) FROM (SELECT TOP 1000 logTime FROM tb) a
我想查的是前1000条数据中最大的logTime,但是无论怎么写查出来的都是整个表中最大的logTime。
虽然懂了,但是不知其所以然,求解决方法怪异

解决方案 »

  1.   

    試試以下:
    SELECT MAX(logTime) FROM (SELECT TOP 1000 logTime FROM tb order by logTime) a
      

  2.   

    关键在这里啊
    SELECT TOP 1000 logTime FROM tb你这个表的默认排序是不是时间的正序?
    那么你top 1000的是不是就是前1000条时间最大的数据,
    在前1000条时间最大的中间找最大的
    不就是整个表中的最大的吗?
      

  3.   

    try this,select max(logTime)
     from (select row_number() over(order by getdate()) 'rn',logTime 
           from tb) a
     where rn<=1000
      

  4.   

    select MAX(logTime) 
    from (
    SELECT logTime,rn=row_number() over(order by logTime) FROM tb
    )t
    where rn<=1000
      

  5.   


    create table tb
    (
    id int identity(1,1),
    CreateDate datetime
    )
    insert into tb values(getdate()+rand()*10000)
    go 1000
    select MAX(CreateDate)FROM tb
    -----------------------
    2041-02-07 21:09:16.310(1 行受影响)SELECT MAX(a.CreateDate) FROM 
    (SELECT TOP 10 CreateDate FROM tb) a-----------------------
    2040-02-12 02:07:31.470(1 行受影响)
    SELECT MAX(a.CreateDate) FROM 
    (SELECT TOP 10 CreateDate FROM tb order by CreateDate asc) a-----------------------
    2013-11-07 15:04:06.393(1 行受影响)--我都不知道到底发生了啥问题????????????