Select * From TableName Where 时间 Not In (Select TOP 5 时间 From TableName Order By 时间 Desc) Order By 时间 Desc
select * from tb where 时间 not in (select top 5 时间 from tb order by 时间 desc)select * from tb where 时间 not in (select top 5 时间 from tb order by 时间 desc) order by 时间 desc
--第一种方法 --第11条到第20条,共选出10条记录 select * from (select top 10 * from (select top 20 * from 表名 order by ID) t1 order by ID desc) t2 order by ID --第二种方法 --第11条到第20条,共选出10条记录 select top 10 * from 表名 where ID>(select max(ID) from (select top 10 ID from 表名 order by ID) t1) order by ID
Select * From TableName Where 时间 Not In (Select TOP 5 时间 From TableName Order By 时间 Desc) Order By 时间
select * from 表名 where 时间 not in (select top 5 时间 from 表名 order by 时间 desc) order by 时间 desc
with Table_test as ( select 你要查询的字段,Row_number() over (order by 时间 desc) as row_num from 表名 ) select * from Table_test where row_num >5
在mysql里用的,这样不行啊, Select * From TableName Where 时间 Not In (Select 时间 From TableName Order By 时间 Desc limit 5) Order By 时间 Desc
错误提示: This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
select * from tb where Not In(select FROM tablename order by desc limit 5
BILLSJONE(BILL_JONE) ( ) 信誉:96 Blog 加为好友 2007-5-5 17:55:16 得分: 0
在mysql里用的,这样不行啊,Select * From TableName Where 时间 Not In (Select 时间 From TableName Order By 时间 Desc limit 5) Order By 时间 Desc
--------- MySQL不熟悉,trySelect * From TableName Where 时间 Not In (Select 时间 From TableName Order By 时间 Desc LIMIT 5) Order By 时间 Desc
copy楼上各位的代码,我把他总结一下(太闲?),看看对不对 ----------------------------------------------------------- --第一种方法 Select * From TableName Where 时间 Not In (Select TOP 5 时间 From TableName Order By 时间 Desc) Order By 时间 Desc 如果你的时间记录只是如YYYY/MM/DD格式的话,时间不唯一,查出来的可能不是从第六条开始,但一定是第六个时间点开始,也许楼主的需求就是这个,如果严格按照只要六条记录的话,把时间改成ID就可以达到唯一了,看以下 ------------------------------------------------------ --第二种方法 --第11条到第20条,共选出10条记录 select * from (select top 10 * from (select top 20 * from 表名 order by ID) t1 order by ID desc) t2 order by ID 这个方法有趣,颠倒两次就得到记录,符合返回记录数的要求.--第三种方法 --第11条到第20条,共选出10条记录 select top 10 * from 表名 where ID>(select max(ID) from (select top 10 ID from 表名 order by ID) t1) order by ID--第四种方法 --如果是oracle,可以用到rowid,是最快的方法 select * from 表名 where rowid>(select max(rowid) from (select top 10 from 表名 order by 时间))--第五种方法 --我一般都不愿意用select in 语句,所以想了一个关联子查询,其实性能未必比max那个好 --从第5条开始选择10条 select top 10 * from 表名,(select top 5 id from 表名 order by 时间ASC) as BB WHERE bb.[id]<表.[id] order by 表.[时间] 这是子查询的经典范例之一,充分利用索引的时候就想到用子查询可惜不能用not exists,要不能在索引字段上使用not exists是最快的. 应该还有其他写法
--第11条到第20条,共选出10条记录
select *
from (select top 10 * from (select top 20 * from 表名 order by ID) t1 order by ID desc) t2
order by ID
--第二种方法
--第11条到第20条,共选出10条记录
select top 10 *
from 表名
where ID>(select max(ID) from (select top 10 ID from 表名 order by ID) t1)
order by ID
Where 时间 Not In (Select TOP 5 时间 From TableName Order By 时间 Desc)
Order By 时间
from 表名
where 时间 not in (select top 5 时间 from 表名 order by 时间 desc)
order by 时间 desc
(
select 你要查询的字段,Row_number() over (order by 时间 desc) as row_num from 表名
)
select * from Table_test where row_num >5
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
在mysql里用的,这样不行啊,Select * From TableName Where 时间 Not In (Select 时间 From TableName Order By 时间 Desc limit 5) Order By 时间 Desc
---------
MySQL不熟悉,trySelect * From TableName Where 时间 Not In (Select 时间 From TableName Order By 时间 Desc LIMIT 5) Order By 时间 Desc
-----------------------------------------------------------
--第一种方法
Select * From TableName Where 时间 Not In (Select TOP 5 时间 From TableName Order By 时间 Desc) Order By 时间 Desc
如果你的时间记录只是如YYYY/MM/DD格式的话,时间不唯一,查出来的可能不是从第六条开始,但一定是第六个时间点开始,也许楼主的需求就是这个,如果严格按照只要六条记录的话,把时间改成ID就可以达到唯一了,看以下
------------------------------------------------------
--第二种方法
--第11条到第20条,共选出10条记录
select *
from (select top 10 * from (select top 20 * from 表名 order by ID) t1 order by ID desc) t2
order by ID
这个方法有趣,颠倒两次就得到记录,符合返回记录数的要求.--第三种方法
--第11条到第20条,共选出10条记录
select top 10 *
from 表名
where ID>(select max(ID) from (select top 10 ID from 表名 order by ID) t1)
order by ID--第四种方法
--如果是oracle,可以用到rowid,是最快的方法
select * from 表名 where rowid>(select max(rowid) from (select top 10 from 表名 order by 时间))--第五种方法
--我一般都不愿意用select in 语句,所以想了一个关联子查询,其实性能未必比max那个好
--从第5条开始选择10条
select top 10 * from
表名,(select top 5 id from 表名 order by 时间ASC) as BB
WHERE bb.[id]<表.[id]
order by 表.[时间]
这是子查询的经典范例之一,充分利用索引的时候就想到用子查询可惜不能用not exists,要不能在索引字段上使用not exists是最快的.
应该还有其他写法