SQL 面试题

 

http://www.xiejianli.net/mianshiti/276/876.htm(转贴地址)

假设只有一个table,名为pages,有四个字段,id, url,title,body。里面储存了很多网页,网页的url地址,title和网页的内容,然后你用一个sql查询将url匹配的排在最前,title匹配的其次,body匹配最后,没有任何字段匹配的,不返回。

就是上面这道面试题,让我想了一个下午,在网上找资料,最后用下面方法实现


SELECT *
FROM page where url like '%baidu%' or title like '%baidu%' or like ''
ORDER BY CHARINDEX('baidu', url) DESC, CHARINDEX('baidu', title) DESC,
      CHARINDEX('baidu', body) DESC

但我感觉这种方法并不是最简单的,后来把这个方法发给面试的人,他给我了一种更简单方法,只要用基本的Sql语句就可以实现。代码如下

 

select a.[id],a.mark from
(
select [page].[id],100 as mark from [page] where [page].[url] like '%baidu%'
union
select [page].[id],50 as mark from [page] where [page].[title] like '%baidu%'
union
select [page].[id],10 as mark from [page] where [page].[body] like '%baidu%'
) as a  order by mark desc

用union 实现联合查询,在每个查询语句中定义一个临时变量mark 并给mark赋值,在最后的输出时采用mark来排序,这样实现真的好简单。其实这都考验我们对Sql的编成思想。

 
阅读更多
文章标签: sql url 面试 table
个人分类: sql学习相关
上一篇left join使用精华:)
下一篇某外企SQL Server面试题(英文,答案)
想对作者说点什么? 我来说一句

SQL全部分析面试题

2008年10月10日 1KB 下载

SQL面试题

2011年06月07日 23KB 下载

SQL面试题2

2018年05月02日 263KB 下载

SQL面试题SQL面试题SQL面试题

2010年07月21日 169KB 下载

sqlsqlSQL面试题

2011年05月26日 4KB 下载

sql面试题以及答案

2010年10月25日 229KB 下载

sql面试题,java面试题

2008年11月19日 42KB 下载

SQL经典面试题-很有用

2009年03月16日 39KB 下载

SQL经典面试题及答案

2016年11月28日 135KB 下载

数据库面试题索引sql优化

2010年05月28日 637KB 下载

没有更多推荐了,返回首页

关闭
关闭