您可以使用子查询集合成员资格测试将来自主查询的值与子查询中的多个值进行比较。
子查询集合成员资格测试将主查询中的每一行的单个数据值与该子查询生成的单一列中的数据值进行比较。如果来自主查询的数据值与该列中的某一 数据值匹配,则该子查询返回 TRUE。
选择领导运输部门或财务部门的雇员的姓名:
SELECT emp_fname, emp_lname FROM employee WHERE emp_id IN ( SELECT dept_head_id FROM department WHERE (dept_name='Finance' or dept_name = 'Shipping'))
| emp_fname | emp_lname |
|---|---|
| Jose | Martinez |
| Mary Anne | Shea |
此示例中的子查询
SELECT dept_head_id FROM department WHERE (dept_name='Finance' OR dept_name = 'Shipping')
从 department 表提取对应于运输部门和财务部门领导的 ID 号。主查询然后返回其 ID 号与该子查询找到的两个 ID 号中的一个相匹配的雇员的姓名。
子查询集合成员资格测试等效于 =ANY 测试。以下查询等效于上一例子中的查询。
SELECT emp_fname, emp_lname FROM employee WHERE emp_id =ANY ( SELECT dept_head_id FROM department WHERE (dept_name='Finance' or dept_name = 'Shipping'))
您还可以使用子查询集合成员资格测试来提取其列值不等于由子查询生成的任何值的那些行。为了对集合成员资格测试取非,应在关键字 IN 之前插入 NOT 一词。
下面的查询中的子查询返回不是财务部门或运输部门领导的雇员的名和姓。
SELECT emp_fname, emp_lname FROM employee WHERE emp_id NOT IN ( SELECT dept_head_id FROM department WHERE (dept_name='Finance' OR dept_name = 'Shipping'))
SQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。