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连接时可以使每个查询语句都使用自己的索引,因此提高了速度。
以上。

浙公网安备 33010602011771号