先看代码SELECT MAX(logTime) FROM (SELECT TOP 1000 logTime FROM tb) a
我想查的是前1000条数据中最大的logTime,但是无论怎么写查出来的都是整个表中最大的logTime。
虽然懂了,但是不知其所以然,求解决方法怪异
我想查的是前1000条数据中最大的logTime,但是无论怎么写查出来的都是整个表中最大的logTime。
虽然懂了,但是不知其所以然,求解决方法怪异
SELECT MAX(logTime) FROM (SELECT TOP 1000 logTime FROM tb order by logTime) a
SELECT TOP 1000 logTime FROM tb你这个表的默认排序是不是时间的正序?
那么你top 1000的是不是就是前1000条时间最大的数据,
在前1000条时间最大的中间找最大的
不就是整个表中的最大的吗?
from (select row_number() over(order by getdate()) 'rn',logTime
from tb) a
where rn<=1000
from (
SELECT logTime,rn=row_number() over(order by logTime) FROM tb
)t
where rn<=1000
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 行受影响)--我都不知道到底发生了啥问题????????????