Oracle中关于集合操作函数如下: 1、uinon:无重复的并集。并以第一列的结果进行升序排序 2、uinon all:有重复的并集,注意,该函数不对结果进行排序 3、intersect:求交集。并以第一列的结果进行升序排序 4、minus:求差集。并以第一列的结果进行升序 5:可以使用order by ,但是必须放在最后一条select语句之后,当列名相同的时候,可以直接用列名排序。如果不同可以使用位置排序,也可以使用别名失去相同。 具体使用: ①:求两个查询结果无重复的并集 例如: 老师发送作业。作业的来源可以是平台的也可以是老师自己上传的。 需求:根据老师ID查询出老师布置的作业。 分析:因为老师布置的作业来源有平台题库或是个人题库的。 所以我们需要查询出平台题库中该老师的题和个人题库中该老师的题。然后对这两个结果求并集 sql如下: select distinct msk.CODE know_code, msk.NAME know_name from MIC_STUDY_KNOWLEDGE msk, EDU_P_PROBLEMS_KNOW eppk, t1 where t1.SOURCE_TYPE = 1 and eppk.PROBLEMS_ID = t1.PROBLEMS_ID and eppk.KNOW_CODE = msk.CODE union select distinct msk.CODE know_code, msk.NAME know_name from MIC_STUDY_KNOWLEDGE msk, MIC_PAPER_PROBLEMS_KNOW mppk, t1 where t1.SOURCE_TYPE = 2 and mppk.TM_ID = t1.PROBLEMS_ID and mppk.KNOW_CODE = msk.CODE |
③:求并集
例如:
需求:根据用户条件 获得用户查询的学段、学科、版本、年级和册别下有哪些章节数据。
说明:各个标签下都有自己的数据。所以我们要根据这五个标签查询出对应的数据然后求并集。
sql如下:
(select ml.resource_id from mic_td_resource_lable ml where ml.lable_id = 156
intersect
select ml.resource_id from mic_td_resource_lable ml where ml.lable_id = 50
intersect
select ml.resource_id from mic_td_resource_lable ml where ml.lable_id = 179
intersect
select ml.resource_id from mic_td_resource_lable ml where ml.lable_id = 11
intersect
select ml.resource_id from mic_td_resource_lable ml where ml.lable_id = 85
intersect
select mc.resource_id from mic_td_resource_chapter mc where mc.chapter_id = 27538
)