MySql必备知识点--选择SELECT

90 阅读2分钟

595 大的国家

大的国家

涉及知识点

  1. SELECT
  2. OR / UNION 之间的区别
SELECT name,population, area 
FROM World 
WHERE area >= 3000000 
UNION 
SELECT name, population,area 
FROM World 
WHERE population >= 25000000;

使用 OR 有可能导致索引失效,因此可以使用UNION

1757 可回收且低脂的产品

可回收且低脂的产品

涉及知识点

  1. SELECT
  2. AND
  3. ()
SELECT product_id FROM pRODUCTS WHERE low_fats = 'Y' AND recyclable = 'Y';

SELECT product_id FROM Products WHERE (low_fats, recyclable) = ('Y','Y');

584 寻找用户推荐人

寻找用户推荐人

涉及知识点

  1. UNION/UNION ALL/OR
  2. 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之间的区别

  1. UNION 对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序
  2. UNION ALL 对两个结果集进行并集操作,包括重复行,不进行排序。 该题中name属性存在重名情况。因此必须使用UNION ALL或OR

如何理解IS NULL 和 = NULL

在SQL里面,NULL是一种特有的数据类型,其等价于没有任何值,是未知数。NULL 与 0、空字符串、空格都不听。SQL默认情况下对WHERE != NULL会永远返回0行,却不会提示语法错误。所以默认情况下使用IS NULLIS NOT NULL

183 从不订购的客户

从不订购的客户

涉及知识点

  1. NOT IN
  2. 子查询
# Write your MySQL query statement below
SELECT name AS Customers
FROM Customers
WHERE ID NOT IN (
    SELECT CustomerID FROM Orders
)

参考文献

  1. zhidao.baidu.com/question/33…
  2. leetcode.cn/study-plan/…