返回

牛客SQL精进:轻松攻克SQL9和SQL10,优化查询技巧

后端

征服SQL9和SQL10:牛客SQL精进之路

身处SQL的浩瀚世界中,想要出类拔萃,牛客SQL刷题是不容错过的进阶之路。面对精心设计的题目,你的SQL查询功力将得到层层历练。而SQL9和SQL10这两道题,更是展现除外查询和过滤空值的锋利法宝。

一、除外查询:巧妙过滤,复旦用户挥别

SQL9邀请你施展除外查询的功力,筛选出非复旦大学的用户。让我们一探究竟:

1. 左联外查询:巧妙实现,抽丝剥茧

运用左联外查询,将用户信息表与大学信息表相连,筛选出所有大学信息为空或非复旦大学的用户即可。

SELECT *
FROM user_info
LEFT JOIN university_info
ON user_info.university_id = university_info.university_id
WHERE university_info.university_name <> '复旦大学';

2. NOT IN:直击要害,除外查询

NOT IN子查询同样能帮你实现除外查询。它检查用户大学ID是否不在复旦大学的大学ID中,若不在,则显示用户信息。

SELECT *
FROM user_info
WHERE university_id NOT IN (
    SELECT university_id
    FROM university_info
    WHERE university_name = '复旦大学'
);

二、过滤空值:层层筛选,还原完整

SQL10考验你过滤SQL空值的能力,寻找那些完整无缺的用户数据。让我们一探究竟:

1. IS NULL和IS NOT NULL:直击空值,巧妙过滤

IS NULL和IS NOT NULL双剑合璧,对空值进行精准识别。它们检查每个字段是否为空,满足条件者方可入选。

SELECT *
FROM user_info
WHERE university_id IS NOT NULL
AND name IS NOT NULL
AND age IS NOT NULL;

2. COALESCE函数:变相过滤,空值替代

COALESCE函数也能助你过滤空值。它返回第一个非空值,若所有参数均为空,则返回NULL。如此一来,满足条件的用户依然能够浮出水面。

SELECT *
FROM user_info
WHERE COALESCE(university_id, 0) > 0
AND COALESCE(name, '') <> ''
AND COALESCE(age, 0) > 0;

三、总结:深耕SQL,高手进阶

通过SQL9和SQL10的深入剖析,除外查询和过滤空值已不再是谜团。牛客SQL的征途仍在继续,更多挑战蓄势待发。相信你的努力和钻研,终将让你成为SQL领域的佼佼者。

常见问题解答

  1. 如何理解LEFT JOIN的原理?
    LEFT JOIN将左表的所有行与右表中匹配的行连接,未匹配的行用NULL填充。

  2. NOT IN和IN有什么区别?
    NOT IN检查值不在指定范围内,而IN检查值在指定范围内。

  3. IS NULL和IS NOT NULL的区别是什么?
    IS NULL检查值是否为空,而IS NOT NULL检查值是否不为空。

  4. COALESCE函数的用法是什么?
    COALESCE函数返回第一个非空值,若所有参数均为空,则返回NULL。

  5. 过滤空值时,为什么使用COALESCE函数比IS NULL和IS NOT NULL更方便?
    COALESCE函数可以将空值替换为指定值,而IS NULL和IS NOT NULL只能过滤空值。