3.8.4 重复元组存在性测试
unique
SQL
提供一个unique
结构用于测试在一个子查询的结果中是否存在重复元组。
unique结果为真的情况
如果作为参数的子查询结果中没有重复的元组, unique
结构将返回true
值。
unique结果为假的情况
当且仅当在关系中存在着两个元组t1和t2,且t1=t2时unique
测试结果为假
注意空值
由于在t1或t2的某个域为空时,判断t1=t2为假,所以尽管一个元组有多个副本,只要该元组有一个属性为空, unique
测试就有可能为真。
SQL
查询 找出所有在2009年最多开设一次的课程
我们可以用unique
结构书写查询”找出所有在2009年最多开设一次的课程”,如下所示:
1 | select T.course_id |
注意如果某门课程不在2009年开设,那么子查询会返回一个空的结果, unique
谓词在空集上计算出真值。
MySQL
好像不支持unique
结构
在不使用unique
结构的情况下,上述查询的一种等价表达方式是
1 | select T.course_id |
1 | mysql> select T.course_id |
not unique
我们可以用not unique
结构测试在一个子查询结果中是否存在重复元组。为了说明这一结构,考虑查询”找出所有在2009年最少开设两次的课程”,如下所示:
1 | select T.course_id |
MySQL
也不支持not unique
原文链接: 3.8.4 重复元组存在性测试