搞清这些陷阱,NULL和三值逻辑再也不会作妖(3)
发布时间:2019-11-07 20:19 所属栏目:115 来源:youzhibing2904
导读:-- 添加 3 个条件:年龄是20 岁,或者不是20 岁,或者年龄未知 --添加3个条件:年龄是20岁,或者不是20岁,或者年龄未知 SELECT*FROMt_student WHEREage=20 ORage20 ORageISNULL; CASE 表达式和 NULL。简单 CASE 表
-- 添加 3 个条件:年龄是20 岁,或者不是20 岁,或者年龄未知
CASE 表达式和 NULL。简单 CASE 表达式如下:
这个 CASE 表达式一定不会返回 ×。这是因为,第二个 WHEN 子句是 col_1 = NULL 的缩写形式。正如我们所知,这个式子的逻辑值永远是 unknown ,而且 CASE 表达式的判断方法与 WHERE 子句一样,只认可逻辑值为 true 的条件。正确的写法是像下面这样使用搜索 CASE 表达式:
NOT IN 和 NOT EXISTS 并非等价 我们在对 SQL 语句进行性能优化时,经常用到的一个技巧是将 IN 改写成 EXISTS ,这是等价改写,并没有什么问题。但是,将 NOT IN 改写成 NOT EXISTS 时,结果未必一样。 我们来看个例子,我们有如下两张表:t_student_A 和 t_student_B,分别表示 A 班学生与 B 班学生。
需求:查询与 A 班住在深圳的学生年龄不同的 B 班学生,也就说查询出 :马化腾 和 李彦宏,这个 SQL 该如何写,像这样?
我们来看下执行结果: (编辑:ASP站长网) |
相关内容
网友评论
推荐文章
热点阅读