条件表达式
关系条件表达式有哪些?
| 表达式 | 含义 |
|---|---|
EXISTS R | R 非空时为真 |
s IN R | s 是 R 中的某个值时为真 |
s NOT IN R | s 不是 R 中的任何值时为真 |
s > ALL R | s 大于 R 中所有值时为真, 其余比较运算符同理 |
NOT (EXISTS/ALL/ANY) | 对外层结果取反 |
元组怎样比较?
- 写法: 用括号把原子值或属性组合成一个元组, 如
(title, year); - 比较规则: 按位置顺序依次比较, 全部对应相等才算相等;
- 用途: 与子查询返回的元组集合做
IN、ANY等判断;
多层嵌套子查询怎样求解?
-- 目标: 找出 Harrison Ford 出演影片的制片人姓名
SELECT name
FROM MovieExec
WHERE cert = (
SELECT producerC
FROM Movies
WHERE (title, year) IN (
SELECT movieTitle, movieYear
FROM StarsIn
WHERE starName = 'Harrison Ford'
)
);
- 最内层: 在
StarsIn中找出 Harrison Ford 的(movieTitle, movieYear)集合; - 中间层: 在
Movies中筛出(title, year)落在该集合里的元组, 取出producerC; - 外层: 在
MovieExec中找出cert等于该值的元组, 取name;
(source: 050-sql.md §子查询/§关系的条件表达式/§元组的条件表达式)