MySql 实用小技巧002 - 三值逻辑和NULL(《SQL进阶教程》学习笔记)

三值逻辑和NULL

SELECT * FROM a = null; 

错误原因: where 后面只查询出true结果 unknown 和 null 比较结果永远是unknown(null不是一个值)

优先级

AND的情况:  false > unknown > true

OR的情况:  true > unknown > false

// 将abc 三者进行比较 
SET @a=2, @b=5, @c=null; 

a < b AND b > c   =>   unknown 
a > b OR b < c    =>   unknown
a < b OR b < c    =>   true
NOT (b <> c)      =>   unknown

查询与 B 班住在东京的学生年龄不同的 A 班学生的 SQL 语句

MySql 实用小技巧002 - 三值逻辑和NULL(《SQL进阶教程》学习笔记)_第1张图片

SELECT *
FROM class_a
where age not in (SELECT age FROM class_b where class_b.age is not null AND city = '东京')


SELECT *
FROM Class_A A
WHERE NOT EXISTS(SELECT * FROM Class_B B WHERE A.age = B.age AND B.city = '东京');

any() all() some()

你可能感兴趣的:(MySQL)