oracle查询第一条记录,oracle取第n条数据
一、经过测试,通过以下方法:
SELECT * FROM
(
选择表名。*,ROWNUM AS CON FROM表名,其中ROWNUM=M,其他查询条件按排序条件排序
)
哪里CON
第二,参考网上其他方法。
SQL/Oracle从m到n中取出记录的方法
用一个SQL语句取出m-n记录的方法
用一个SQL语句取出m-n记录的方法
获取表中从m到n的记录:(不在版本中)
选择前n-m 1 *
来自表格
其中(id不在(从表中选择前m-1个id))
-从表中取出m到n条记录(Exists版本)
从表中选择前n-m 1 *作为不存在的a
(Select * From(Select Top m-1 * From TABLE order by id)b其中b.id=a.id)
按id排序
-m是上标,n是下标,比如取出第8到第12条记录,m=8,n=12,table是表名。
从表格中选择前n-m 1 *
其中Id(选择最大(Id) From
(从表Order By Id Asc中选择Top m-1 Id)Temp)
按Id Asc排序
一楼【房东】2007-03-02 10:38
直接获取数据库中的分页记录。
前提是表中必须有主键。
获取m条记录后的n条记录:
选择前N名*
来自[表格]
我不在
(选择顶部M id
来自[表格]
ORDER BY [ORDER])
按顺序排列
在Oracle中实现,获取m到n条记录:SELECT * FROM
(
SELECT *,ROWNUM作为CON FROM
(
SELECT * FROM[表]ORDER BY[顺序]
)
其中ROWNUM=N
)
哪里CON
回复参考视图
查询表中的一些连续记录。
不要传递任何列的条件参数,查询表中的一些连续记录。
例如,在表A中,A,id列是主键
身份证姓名性别年龄
-
1罗衣男21
2丫丫女20
3丽丽女22
4吴勇男性25
...
这个表中还有很多记录。如果我要拿第二第三张唱片,不出意外的话,我要这两张。这个不仅会用在编程上,在一些公司面试中也会有类似的考题(呵呵,没遇到过)。在oracle和mssqlserver中,SQL代码是:
一.甲骨文
在oracle中不能使用top关键字,但是可以通过两种方式使用rownum。
1.(select * from A where rownum=4)减去(select * from A where rownum=1)
所以你会得到两个,三个或者两个记录。Minus关键字的意思是求两个结果集的差集。数学上有这个概念。例如,两个集合可以是合并的、共享的和差异的集合。
2.代码select * from(select * from a where row num 4)b where b . id not in(select id from a where row num 2)也可以是实数。主要使用not in运算符。
第二,ms sql server
服务器没有减号,只能用类似oracle的第二种方法。
select * from(select top 3 * from A)as b where b . id not in(select top 1 id from A)
第三,得出的结果如下:
身份证姓名性别年龄
-
2丫丫女20
3丽丽女22
回复参考视图
查询数据库中的n条记录,然后对这n条记录进行排序。
看到这个主题,有人会写这句话,
select top 10 * from tablename order by create time
这句话的意思正好和主题相反。
正确答案1:
select top 10 * from TableName where id in(select top 10 id from TableName order by id)order by create time
这个语句,可以找到表中的前10条记录,然后按createtime时间排序。
是的,表中需要一个主键。
2个答案
没有主键也可以。
选择*
从(选择前10名*
来自标题)嗯
按DESC出版日期排序
回复参考视图
随机取出几条记录的SQL语句
Sql server:
Select 20 * from table order by newid()
访问:
按Rnd(id)从表中选择20 *
Rnd(id)其中id是自动编号字段,它可以由任何其他数值来完成。
例如使用名称字段(用户名)
select 20 * from table ORDER BY Rnd(len(UserName))
MySql:
select * From table Order By rand()Limit 20
回复参考视图
作者:yanek
email:yanek@126.com
特点:一次查询,数据库只返回一页数据。而不是拿出所有的数据。
描述:
Pagesize:每页显示的记录数
Cureentpage:当前的页数
SELECT * FROM(SELECT TOP pagesize * FROM(SELECT TOP pagesize * curent page * FROM user _ table ORDER BY id ASC)as a stable ORDER BY id desc)as b stable ORDER BY id ASC
示例描述:
如果数据库表如下:
用户_表格:
Id:主键,自增
用户名:字符
密码:字符
假设有80条记录,每页显示id从1到80的10条记录。
现在按id升序取出的第三页的数据应该是:获得的记录的id应该是21到30。
此时,该语句应读作:
SELECT * FROM(SELECT TOP 10 * FROM(SELECT TOP 30 * FROM user _ table ORDER BY id ASC)作为按id DESC的不稳定订单)作为按id ASC的不稳定订单
原理如下:
首先按id升序取出30条记录(3*10),即id在1到30之间的记录(按ID ASC从user _ table order中选择top 30 *)
然后,这30条记录按ID降序排列,记录从30到1。
然后从这30条记录中取出前10条记录:得到的记录是:id在30到21之间。这是我们需要的数据,但是是降序排列,不符合要求。
最后,我们重新排序,得到我们需要的最终数据。Id介于21和30之间