牛客SQL精进:轻松攻克SQL9和SQL10,优化查询技巧
2023-02-28 11:42:30
征服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领域的佼佼者。
常见问题解答
-
如何理解LEFT JOIN的原理?
LEFT JOIN将左表的所有行与右表中匹配的行连接,未匹配的行用NULL填充。 -
NOT IN和IN有什么区别?
NOT IN检查值不在指定范围内,而IN检查值在指定范围内。 -
IS NULL和IS NOT NULL的区别是什么?
IS NULL检查值是否为空,而IS NOT NULL检查值是否不为空。 -
COALESCE函数的用法是什么?
COALESCE函数返回第一个非空值,若所有参数均为空,则返回NULL。 -
过滤空值时,为什么使用COALESCE函数比IS NULL和IS NOT NULL更方便?
COALESCE函数可以将空值替换为指定值,而IS NULL和IS NOT NULL只能过滤空值。