可以在 SQL 语句的 WHERE 子句中使用 IN 关键字来确定集合是否包含某元素。例如:
下列查询显示如何构造返回 mgr_name 和 department 的值的查询,其
中 Adams 是 direct_reports 列中集合的一个元素。
图: 查询
SELECT mgr_name, department
FROM manager
GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 78 -
WHERE 'Adams' IN direct_reports
图: 查询结果
mgr_name Sayles
department marketing
尽管可以使用带有 IN 关键字的 WHERE 子句来搜索简单集合中的特定集合。
但是查询总
是返回整个集合。例如:下列查询返回集合的所有元素,其中 Adams 是 direct_reports 列中
集合的一个元素。
图: 查询
SELECT mgr_name, direct_reports
FROM manager
WHERE 'Adams' IN direct_reports
图: 查询结果
mgr_name Sayles
direct_reports SET {Smith, Waters, Adams, Davis, Kurasawa}
如上所示,对集合列的查询返回整个集合,不是集合中的特定元素。
可以在 WHERE 子句中使用 IN 关键字来只引用简单集合。
不能使用 IN 关键字来引用包
含本身就是集合的字段的集合。例如:不能使用 IN 关键字来引用 manager 表中
的 projects 列,原因是 projects 是嵌套集合。
可以在 SELECT 语句的 WHERE 子句中组合 NOT 和 IN 关键字来搜索不包含某元素
的集合。例如:下列查询显示返回 mgr_name 和 department的值的查询,其中 Adams 不
是 direct_reports 列中集合的元素。
图: 查询
SELECT mgr_name, department
FROM manager
WHERE 'Adams' NOT IN direct_reports
图: 查询结果
mgr_name Williams
department engineering
mgr_name Lyman
department publications
mgr_name Cole
department accounting
有关如何对集合列中的元素进行技术的信息,请参阅基数函数。
GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 79 -