您的位置:首页 > 职场人生

SQL 面试题

2009-06-24 14:13 375 查看
1. 表A,有一字段ID为自增字段,但是值不一定是连续的。 用一条SQL语句,查找出表中第31到第40条共10条记录。

分析:此题其实就是实现一个分页功能。Oracle可以用rownum和 order by来实现,其他的DB可以用Top N来实现。

Oracle实现:

SELECT ID FROM

(SELECT ROWNUM recno, ID from A ORDER BY recno)

WHERE recno >30 AND recno < 41

2. 一新闻管理系统,有articles 和 comments 两个表,表结构如下:

articles(id, name, content,clickCount) 其中id为主键

comments(id, article_id, comment) 其中id为主键, article_id为外键,article的主键

要求用一条SQL语句检索出name,clickCount以及文章的评论数量,如果这个文章没有评论则为0。

select name, clickCount, commentCount from(

select id, name, clickCount,COUNT(article_id) as commentCount from articles t LEFT OUTER JOIN comments p ON t.id = p.article_id

GROUP BY id,name, clickCount)

参考文章:

摘自:http://www.w3school.com.cn/sql/sql_top.asp

SQL TOP 子句

Previous Page

Next Page

TOP 子句

TOP 子句用于规定要返回的记录的数目。

对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。

注释:
并非所有的数据库系统都支持 TOP 子句。

SQL Server 的语法:

SELECT TOP number|percent column_name(s)

FROM table_name


MySQL 和 Oracle 中的 SQL SELECT TOP 是等价的

MySQL 语法

SELECT column_name(s)

FROM table_name

LIMIT number

例子

SELECT *

FROM Persons

LIMIT 5

Oracle 语法

SELECT column_name(s)

FROM table_name

WHERE ROWNUM <= number

例子

SELECT *

FROM Persons

WHERE ROWNUM <= 5


原始的表 (用在例子中的):

Persons 表:

IdLastNameFirstNameAddressCity
1AdamsJohnOxford StreetLondon
2BushGeorgeFifth AvenueNew York
3CarterThomasChangan StreetBeijing
4ObamaBarackPennsylvania AvenueWashington

SQL TOP 实例

现在,我们希望从上面的 "Persons" 表中选取头两条记录。

我们可以使用下面的 SELECT 语句:

SELECT [code]TOP 2

* FROM Persons[/code]

结果:

IdLastNameFirstNameAddressCity
1AdamsJohnOxford StreetLondon
2BushGeorgeFifth AvenueNew York

SQL TOP PERCENT 实例

现在,我们希望从上面的 "Persons" 表中选取 50% 的记录。

我们可以使用下面的 SELECT 语句:

SELECT [code]TOP 50 PERCENT

* FROM Persons[/code]
结果:

IdLastNameFirstNameAddressCity
1AdamsJohnOxford StreetLondon
2BushGeorgeFifth AvenueNew
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: