595 大的国家
涉及知识点
- SELECT
- OR / UNION 之间的区别
SELECT name,population, area
FROM World
WHERE area >= 3000000
UNION
SELECT name, population,area
FROM World
WHERE population >= 25000000;
使用 OR 有可能导致索引失效,因此可以使用UNION
1757 可回收且低脂的产品
涉及知识点
- SELECT
- AND
- ()
SELECT product_id FROM pRODUCTS WHERE low_fats = 'Y' AND recyclable = 'Y';
SELECT product_id FROM Products WHERE (low_fats, recyclable) = ('Y','Y');
584 寻找用户推荐人
涉及知识点
- UNION/UNION ALL/OR
- IS NULL / = NULL ?
# Write your MySQL query statement below
SELECT name FROM CUSTOMER WHERE referee_id != 2
UNION all
SELECT name FROM CUSTOMER WHERE referee_id is NULL;
# Write your MySQL query statement below
SELECT name FROM customer WHERE referee_id != 2 OR referee_id is null;
该题中,使用UNION 则失败,全部用例未通过。主要原因在于未了解UNION 和UNION ALL之间的区别
- UNION 对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序
- UNION ALL 对两个结果集进行并集操作,包括重复行,不进行排序。 该题中name属性存在重名情况。因此必须使用UNION ALL或OR
如何理解IS NULL 和 = NULL
在SQL里面,NULL是一种特有的数据类型,其等价于没有任何值,是未知数。NULL 与 0、空字符串、空格都不听。SQL默认情况下对WHERE != NULL会永远返回0行,却不会提示语法错误。所以默认情况下使用IS NULL和IS NOT NULL。
183 从不订购的客户
涉及知识点
- NOT IN
- 子查询
# Write your MySQL query statement below
SELECT name AS Customers
FROM Customers
WHERE ID NOT IN (
SELECT CustomerID FROM Orders
)