sqlserver取n条,sqlserver取最新的一条记录

sqlserver 怎样取出最后几条数据

不用排序,但是表需要有一个唯一确定一条记录的ID字段,设表名为TABLENAME,ID为其唯一关键字段,这样实现:

10年积累的成都网站设计、网站制作、外贸营销网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有阜平免费网站建设让你可以放心的选择与我们合作。

declare @BOTT INT,@COUNT int,@SQLSTR VARCHAR(1000)

SET @BOTT=10--设置要取得最后几条记录,这里是10条

SET @COUNT=(SELECT COUNT(1) FROM TABLENAME)--求出表的总记录数

IF @COUNT@BOTT--如果总记录数大于要求结果的记录数,就减去要求记录数

SET @COUNT=@COUNT-@BOTT

SET @SQLSTR='SELECT * FROM TABLENAME WHERE ID NOT IN(SELECT TOP '+CONVERT(VARCHAR,@COUNT)+' ID FROM TABLENAME)'

--注:子查询记录数TOP 是总记录数-要求记录数,所以主查询就是总记录除去子查询记录数

exec(@SQLSTR)

SqlServer能不能查询表中的50到100条记录

sqlserver不支持limit只能变相实现了

取第m条到第n条记录:

select top (n-m+1) id from tablename

where id not in (

select top m-1 id from tablename

)

50到100条

select top (51) id from tablename

where id not in (

select top 49 id from tablename

)

sql server 怎么查询前n条数据

1.

Oracle数据库

SELECT

*

FROM

TABLENAME

WHERE

ROWNUM

=

N

2.

Infomix数据库

SELECT

FIRST

N

*

FROM

TABLENAME

3.

DB2数据库

SELECT

*

FROM

(SELECT

*

ROW_NUMBER()

OVER({ORDER

BY

COL1

DESC})

AS

ROWNUM

FROM

TABLENAME)

WHERE

ROWNUM

=

N

或者

SELECT

COLUMN

FROM

TABLENAME

FETCH

FIRST

N

ROWS

ONLY

4.

SQL

Server数据库

SELECT

TOP

N

*

FROM

TABLENAME

5.

Sybase数据库

SET

ROWCOUNT

N

GO

SELECT

*

FROM

TABLENAME

6.

MySQL数据库

SELECT

*

FROM

TABLENAME

LIMIT

N

7.

FoxPro数据库

SELECT

*

TOP

N

FROM

TABLENAME

ORDER

BY

COLUMN

以下示例从表

[tableName]

中读取符合查询条件的前10条记录的SQL语句

1.Access

select

top

(10)

*

from

[tableName]

where

[query

condition]

1.1

带order

by的查询限制

Access中对select

top的语句支持有限,如果要在查询top语句的后面使用order

by,则order

by排序字段必须是无重复值,如果有重复值的话,那么这个TOP很可能会失效,会返回所有记录。

解决办法:在order

by

最后面加入主键id,如:

select

top

10

from

[tableName]

order

by

排序字段1,id

1.2

带子查询的示例

假如id是表[tableName]的主键,以下语句期望返回三条记录,但结果返回4条记录

select

top

3

*

from

[tableName]

where

id

in(是个子查询,结果比如为1,2,3,4)

解决办法

select

top

3

*

from

[tableName]

where

id

in(是个子查询,结果比如为1,2,3,4)

order

by

id

2

DB2

select

column

from

[tableName]

where

[query

condition]

fetch

first

10

rows

only

3

MySQL

select

*

from

[tableName]

where

[query

condition]

limit

10

4

SQL

Server

4.1

读取前10条

select

top

(10)

*

from

[tableName]

where

[query

condition]

4.2

读取后10条

select

top

(10)

*

from

[tableName]

order

by

id

desc

4.3

按照某个排序,第5到10这几个记录

select

top

6

*

from

[tableName]

where

id

not

in(select

top

4

id

from

[tableName])

5

Oracle

select

*

from

[tableName]

where

rownum=10

sql随机取n条数据

oracle 里面能实现,sqlserver里面不知道有没有分析函数

给你个参考

select *

from

(

select id,name,tid,rank()over(partition by tid order by sys_guid())rnd

from table

) t

where rnd = 5

其中

rank()over(partition by tid order by sys_guid())

的作用是求按tid分组然后按照sys_guid(相当于sql中的newid)排序后这一行所处的名次


当前名称:sqlserver取n条,sqlserver取最新的一条记录
网站链接:http://abwzjs.com/article/hdccod.html