关于一道sql的面试题 (非常精典)
2006-08-17 19:20
302 查看
今天接受面试,面试公司出了这样一道题
假设只有一个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的编成思想。
把上面的代码拿出来和大家分享,如果大家还有其他的方法也发上来。
假设只有一个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的面试题 (非常精典) (转)
- 一道SQL语句面试题,关于group by
- 一道sql 关于pivot的面试题
- 一道关于sql的面试题
- 一道关于finally的看似非常简单但很多人都做错的Java面试题
- 一道SQL语句面试题,关于group by的
- 一道SQL语句面试题,关于group by
- 对一道面试题的总结与扩展思考(关于一笔画问题的数学分析)
- 测试鸡蛋的硬度:一道关于查找的面试题
- 一道关于返回指针和返回数组名的面试题
- 关于一道JS面试题的思考
- 关于数组指针的一道面试题
- 关于《程序员面试宝典》中一道面试题的答案
- 关于一道面试题的分析与解答
- 一道关于计算机如何做加法的面试题
- 一道关于try,finally执行顺序的面试题
- 一道面试题中涉及到的SQL的高级使用
- 一道腾讯的面试题,关于a和&a
- 关于正则表达式的一道面试题
- 一道关于买房的面试题