重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
看你是什么数据库,如果是sqlserver2005(是05版本还是07版本忘记了)以上或者oeacle的话,那么用select * from table where rownum=N;就可以,这里的N是一个变量,假如你要查前5条,那么就把N改为5就可以。
作为一家“创意+整合+营销”的成都网站建设机构,我们在业内良好的客户口碑。创新互联提供从前期的网站品牌分析策划、网站设计、成都网站制作、成都做网站、创意表现、网页制作、系统开发以及后续网站营销运营等一系列服务,帮助企业打造创新的互联网品牌经营模式与有效的网络营销方法,创造更大的价值。
如果是mysql,那么利用top,select top 5 * from table;现在的一些新的mysql版本好像也有rownum的概念了,记得不是那么清什么版本了。
常用几种数据库,取前10条记录的sql语句写法。
access:
select top (10) * from table1 where 1=1
db2:
select column from table where 1=1 fetch first 10 rows only
mysql:
select * from table1 where 1=1 limit 10
sql server:
读取前10条:select top (10) * from table1 where 1=1
读取后10条:select top (10) * from table1 order by id desc
oracle:
select * from table1 where rownum=10
取10-30条的记录:
select top 20 * from 表名 where id not in(select top 10 id from 表名)
扩展资料:
使用SQL从表中取记录。
SQL的主要功能之一是实现数据库查询。如果你熟悉Internet 引擎,那么你已经熟悉查询了。你使用查询来取得满足特定条件的信息。
多数Internet 引擎允许逻辑查询。在逻辑查询中,你可以包括特殊的运算符如AND、OR和NOT,你使用这些运算符来选择特定的记录。
如果需要扩展查询的结果,可以使用逻辑操作符OR。例如,如果执行一个搜索,搜索所有的其描述中包含Active Sever Pages OR SQL的站点,收到的列表中将包括所有其描述中同时包含两个表达式或其中任何一个表达式的站点。
如果想从搜索结果中排除特定的站点,可以使用NOT。例如,查询“Active Sever Pages ”AND NOT “SQL”将返回一个列表,列表中的站点包含Active Sever Pages,但不包含SQL。当必须排除特定的记录时,可以使用NOT。
用SQL执行的查询与用Internet搜索引擎执行的搜索非常相似。 当执行一个SQL查询时,通过使用包括逻辑运算符的查询条件,你可以得到一个记录列表。此时查询结果是来自一个或多个表。
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
建立表结构如下: CREATE table [dbo].[tmp_Trans]( IDintidentity, PO_NO varchar(20) null, PO_Itemno varchar(20) null, Qty numeric(18,6) null, Trans_Date datetime null, Doc_no varchar(20) null)要求取相同PO_NO按Trans_Date倒序排序的前两条记录。 1.Where子句嵌套SELECT的方式。在嵌套的SELECT语句中可以与主表的字段相关联,达到分类的目的。 这种方式又有三种写法: 1)如果表中有主键,可以用IN的方式。 SELECT * FROM tmp_Trans t WHERE ID IN( SELECT TOP 2 ID FROM tmp_Trans WHERE PO_NO=t.PO_NO ORDER BY Trans_Date DESC)2)如果没有主键,可以用判断在本条记录前有多少条记录的方式。但使用这种方式时如果遇到Trans_Date相同的情况会不准。如当存在Trans_Date最大的记录有三条时,这三条记录都会查出来。 SELECT *FROM tmp_Trans tWHERE (SELECT COUNT(*) FROM tmp_Trans WHERE PO_NO=t.PO_NO AND Trans_DateT.Trans_Date)23)使用CROSS APPLY子句。CROSS APPLY是SQL Server 2005后出来的新功能,用于在表连接时传入参数。 SELECT DISTINCT b.* FROM tmp_Trans a CROSS APPLY(SELECT TOP(2) * FROM tmp_Trans WHERE a.PO_NO=PO_NO ORDER BY Trans_Date DESC) b 2.使用自动生成的Row Number。在使用ROW_NUMBER()时可以用PARTITION BY子句来分组。建议使用这种方式。select * from (