如何查询得到SQL数据库表中第N行数据

N是一个不确定的数啊

第1个回答  2011-11-02
exec('select top '+ @n+' * from table1') //n 是传来的参数追问

@n,是一个存储函数么?,如果是,烦劳你写下,这方面不懂,让我看下

追答

1、exec 是 EXECUTE 的缩写。
功能是 执行一个存储过程.
或者是 执行一个 动态SQL
2、 DECLARE @n INT; //声明一个参数 n 是int 型
现在 明白了么?

追问

您的意思是这两个句子都执行么
DECLARE @n INT
exec('select top '+ @n+' * from book4')
是这个意思么?但出来说*附近有语法错误,我用的是SQL 2005。

追答

参数的传入
1> BEGIN

2> DECLARE @Sql NVARCHAR(200);

3> DECLARE @id INT;

4> DECLARE @name VARCHAR(10);

5> SET @id = 1;

6> SET @name = 'C';

7> SET @Sql = 'SELECT * FROM test_dysql WHERE id=@id OR name=@name';

8> PRINT @Sql;

9> EXEC SP_EXECUTESQL @Sql, N'@id INT, @name VARCHAR(10)', @id, @name;

10> END

11> go

SELECT * FROM test_dysql WHERE id=@id OR name=@name
这是一个例子 你看看 我用的是 Oracle 没有办法执行

本回答被提问者采纳
第2个回答  2011-11-02
假如要取第10行
select top 1 * from (select top 10 * from T0 order by ID )T1 order by ID desc
第3个回答  2015-08-11
ORACLE select * from (select ROW_NMBER () over(order by column_name) as rn from table_name ) tb where tb.rn =? 你的行号
来排序之后再检索
第4个回答  2011-11-02
看你是什么数据库? db2/oracle/sql server 2005以上可以, mysql变通下应该也行追问

sql 2005的

追答

try this:

SELECT tab.*, ROW_NUMBER() OVER() AS RK
FROM TAB

不知道2005支持rownum没有,如果支持,还可以
select t.*
from (select tab.*, rownum as rk from tab) t
where rk = xxxx

追问

SELECT book4.*, ROW_NUMBER() OVER(order by 内容) FROM book4
这种出来的结果不是某一行啊而是全部,劳烦您解释清楚一些再,我似乎不大懂。呵呵

追答

select book4.*
from (SELECT book4.*, ROW_NUMBER() OVER(order by 内容) as rk FROM book4) t
where rk = 你要的行数

第5个回答  2011-11-02
exec('select top '+ @i+' * from table1')
相似回答