前一阵子去了个面试,其中有个道考题是写出取某张表前10条记录的sql语句。一头雾水,回来问了同学也没有结果,近来上网搜了一下,收获如下:
原来不同的DBMS对此操作的sql语句也不同。
(取出TABLE1 的前 N 的纪录)
1. ORACLE
SELECT * FROM TABLE1 WHERE ROWNUM<=N
2. MYSQL
SELECT * FROM TABLE1 LIMIT N
3. SQL SERVER
SELECT TOP N * FROM TABLE1
下面的DBMS我都没用过了,
4. INFORMIX
SELECT FIRST N * FROM TABLE1
5. DB2
SELECT * ROW_NUMBER() OVER(ORDER BY COL1 DESC) AS ROWNUM WHERE ROWNUM<=N
或者
SELECT COLUMN FROM TABLE FETCH FIRST N ROWS ONLY
6. SYBASE
SET ROWCOUNT N
7. FOXPRO
SELECT * TOP N FROM TABLE ORDER BY COLUMN
MySQL中如何实现Top N及M至N段的记录查询?
在MySQL中,如何实现Top N及M至N段的记录查询?
我们可以利用MySQL中SELECT支持的一个子句——LIMIT——来完成这项功能。
LIMIT可以实现top N查询,也可以实现M至N(某一段)的记录查询,具体语法如下:
SELECT * FROM MYTABLE
ORDER BY AFIELD
LIMIT offset, recnum
其中offset为从第几条(M+1)记录开始,recnum为返回的记录条数。例:
select * from mytable
order by afield
limit 2, 5
即意为从第3条记录开始的5条记录。
SQL查询:各数据库系统获取前N条记录的方法
这篇博客介绍了如何在不同数据库管理系统(如Oracle、MySQL、SQL Server、Informix、DB2和Sybase)中使用SQL语句获取表的前N条记录。在MySQL中,可以使用LIMIT子句实现这一功能,例如`LIMIT offset, recnum`来获取从第offset条开始的recnum条记录。了解这些差异对于数据库开发者来说至关重要。
10万+

被折叠的 条评论
为什么被折叠?



