您好我正在尝试将以下每个查询的结果合并到一个查询中。我知道我可以做一个联盟,但我想知道是否有更好的方法,因为每个表有不同的列?感谢
select distinct RESOURCE_ID from USER_ROLES where TEST_IND ='Y'
select distinct RESOURCE_ID from USER_PLATFORMS where TEST_IND ='Y'
select distinct RESOURCE_ID from USER_COMPETENCIES where TEST_IND ='Y'
select distinct RESOURCE_ID from USER_TECH_SKILLS where TEST_IND ='Y'
select distinct RESOURCE_ID from USER_MGR_SKILLS where TEST_IND ='Y'
select distinct RESOURCE_ID from USER_APPS where TEST_IND ='Y'
select distinct RESOURCE_ID from BUS_PROCS where TEST_IND ='Y'
答案 0 :(得分:1)
虽然您说您不想要UNION查询,但评论中描述的要求中没有任何内容排除它。只要您选择的列在所有表中都相同,就可以使用不同的列。
这就是您所需要的
select RESOURCE_ID from USER_ROLES where TEST_IND ='Y'
UNION
select RESOURCE_ID from USER_PLATFORMS where TEST_IND ='Y'
UNION
select RESOURCE_ID from USER_COMPETENCIES where TEST_IND ='Y'
UNION
select RESOURCE_ID from USER_TECH_SKILLS where TEST_IND ='Y'
UNION
select RESOURCE_ID from USER_MGR_SKILLS where TEST_IND ='Y'
UNION
select RESOURCE_ID from USER_APPS where TEST_IND ='Y'
UNION
select RESOURCE_ID from BUS_PROCS where TEST_IND ='Y'
注意:我拿出了不同的条款,工会将结果分开,所以它是多余的。
答案 1 :(得分:1)
UNION
是您最好的选择,它会自动删除结果集中的重复项,如果您想保留重复项,可以使用UNION ALL
。
select RESOURCE_ID from USER_ROLES where TEST_IND ='Y'
UNION
select RESOURCE_ID from USER_PLATFORMS where TEST_IND ='Y'
UNION
select RESOURCE_ID from USER_COMPETENCIES where TEST_IND ='Y'
UNION
select RESOURCE_ID from USER_TECH_SKILLS where TEST_IND ='Y'
UNION
select RESOURCE_ID from USER_MGR_SKILLS where TEST_IND ='Y'
UNION
select RESOURCE_ID from USER_APPS where TEST_IND ='Y'
UNION
select RESOURCE_ID from BUS_PROCS where TEST_IND ='Y'
答案 2 :(得分:-1)
除了已经提到的联合之外,您可以使用多语句表值函数:从众多查询中定义表变量和SELECT INTO,然后从functionName()中选择*。但是,您仍然需要每个查询生成具有相同数据类型的相同列,因此您可能需要将圆形桩转换/转换为方形柱状孔。