justdo-it  

There is a table World

+-----------------+------------+------------+--------------+---------------+
| name            | continent  | area       | population   | gdp           |
+-----------------+------------+------------+--------------+---------------+
| Afghanistan     | Asia       | 652230     | 25500100     | 20343000      |
| Albania         | Europe     | 28748      | 2831741      | 12960000      |
| Algeria         | Africa     | 2381741    | 37100000     | 188681000     |
| Andorra         | Europe     | 468        | 78115        | 3712000       |
| Angola          | Africa     | 1246700    | 20609294     | 100990000     |
+-----------------+------------+------------+--------------+---------------+

A country is big if it has an area of bigger than 3 million square km or a population of more than 25 million.

Write a SQL solution to output big countries' name, population and area.

For example, according to the above table, we should output:

+--------------+-------------+--------------+
| name         | population  | area         |
+--------------+-------------+--------------+
| Afghanistan  | 25500100    | 652230       |
| Algeria      | 37100000    | 2381741      |
+--------------+-------------+--------------+


这是LeetCode通过率最高的一道题(70.5%),也从侧面说明了这道题的简单。
废话不多说,简单翻译一下题目:

给你一个数据库表(表名:World),然后查出area大于3000000或者population大于25000000,并且只显示name,population,area这三个字段

这里说两种解法:
第一种解法就是常规的做法使用or,用时:4198 ms

select name, population, area from World where population > 25000000 or area > 3000000;

 

第二种解法用union,用时: 3005 ms

select name, population, area from World where population > 25000000 
union
select name, population, area from World where area > 3000000;

 

实话讲,我个人对于sql语句并没有特别了解,在此处查到的资料说的是,union连接时可以使每个查询语句都使用自己的索引,因此提高了速度。

以上。




posted on 2018-02-27 19:22  justdo-it  阅读(140)  评论(0)    收藏  举报