我是靠谱客的博主 斯文画笔,最近开发中收集的这篇文章主要介绍SQL进阶--三值逻辑和NULL,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

not in 和 not exists

-- not in 和 not exists 
drop table if exists class_a;
create table class_a(
name1 varchar(20),
age
int8,
city
varchar(30)
);
insert into class_a values('布朗', 22, '东京');
insert into class_a values('拉里', 19, '琦玉');
insert into class_a values('伯杰', 21, '千叶');
drop table if exists class_b;
create table class_b like class_a;
insert into class_b values('齐藤', 22, '东京');
insert into class_b values('天口', 23, '东京');
insert into class_b values('山田', NULL, '东京');
insert into class_b values('和泉', 18, '千叶');
insert into class_b values('武田', 20, '千叶');
insert into class_b values('石川', 19, '神奈川');

查询与条件中存在NULL


-- 查询与B班住在东京的学生年龄不同的A班的学生
select
*
from
class_a
where
age not in (select age from class_b where city = '东京'); -- 没有结果
-- 用not exists 可以查出
select
*
from
class_a a
where
not exists (select * from class_b b where a.age = b.age and city = '东京');

not exists 语句处理NULL值的逻辑

-- 1 子查询中
select
*
from
class_a a
where
not exists (select * from class_b b where a.age = null and city = '东京');
-- 2

select
*
from
class_a a
where
not exists (select * from class_b b where unknown and city = '东京');
-- 3
select
*
from
class_a a
where
not exists (select * from class_b b where False);
-- 4
select
*
from
class_a a
where
True;
-- 即山田被作为“与任何人的年龄都不同的人”来处理,EXISTS 只会返回true 或者 False

内容多来自 《SQL进阶教材》,仅做笔记。

最后

以上就是斯文画笔为你收集整理的SQL进阶--三值逻辑和NULL的全部内容,希望文章能够帮你解决SQL进阶--三值逻辑和NULL所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部