sql - 在带有嵌套表列 sql oracle 的表中查找不相交的集合

标签 sql oracle nested set multiset

这些是示例数据:

CREATE OR REPLACE TYPE CourseList AS TABLE OF VARCHAR2(64);

CREATE TABLE department (
courses  CourseList)
NESTED TABLE courses STORE AS courses_tab;

INSERT INTO department (courses)VALUES (CourseList('1','2','3'));
INSERT INTO department (courses)VALUES (CourseList('4','5','7'));
INSERT INTO department (courses)VALUES (CourseList('1','2'));

commit;

 select d1.courses
from department d1
where not exists (select 1 from department d2 
  where d1.courses<> d2.courses and d1.courses submultiset of d2.courses);

commit;

Result:

CourseList(1,2,3)
CourseList(4,5,7)

该查询返回正确的数据 CourseList,它不是表的任何其他 CourseList 的子集。

关于如何在没有子查询的情况下做到这一点的一些想法,我认为可以使用同一个表的 join 来完成,但我不知道该怎么做。

谢谢。

最佳答案

我更喜欢你的子查询,我自己。但另一种选择是:

select d.courses
from department d
MINUS
select d2.courses
from department d2, department d1
where d1.courses<> d2.courses
and d1.courses submultiset of d2.courses;

关于sql - 在带有嵌套表列 sql oracle 的表中查找不相交的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9935578/

相关文章:

带有 substr 的 Oracle 选择查询

json - XML 到 JSON 多重嵌套

nested - 创建一个包含嵌套环境的新环境

php - mysql通过外键将主表与另一个表连接

mysql - 如何启动具有特定增量值的mysql列?

sql - ORACLE SQL CASE语句-出现错误

oracle - 错误 - ORA-06502 : PL/SQL: numeric or value error

sql - 有没有不依赖 SQL 的 DBMS?

sql - 如何在sql server中创建一个负随机数?

apache-spark - Spark 嵌套 foreach