我有一个表,它返回路径并选择查询( result1 )....
我想获得select查询和相对路径联合的结果...确保我不想将result1存储在任何表中..
我只想要一个选择查询..
为了更清楚地解决这个问题,我举了一个例子......
我有一个名为table1的表,它存储了路径和查询,如下所示
现在我触发select查询并得到如下结果:
Path | Query
page1 | select name from table2
page2 | select name from table3
page3 | select name from table4
我想要的是所有查询的并集结果必须附加其相对路径,因此预期结果将如下所示:
path | result of queries
page1 | first query's result
page2 | second query's result
page3 | third query's result
所以简而言之,我想在数据(在这种情况下)附加与之相关的联合查询的结果......
答案 0 :(得分:1)
看起来非常简单,只需在选择中使用假字段:
select
'page1' as Path
col1,
col2
from
table1
union all
select
'page2' as Path
col1,
col2
from
table2
union all
select
'page3' as Path
col1,
col2
from
table3
和宾果游戏,你拥有自己的数据,当你称之为数据时,你就有了“附加”数据,而且每个人都过着幸福的生活。
编辑:除非查询中有可识别的内容可用于识别它的来源,否则如果不修改查询,则无法执行此操作。如果查询中存在任何内容(即使不是您想要的内容),那么您可以将union查询用作子查询并从静态查询或CTE连接到它:
select
p1
c1,
c2
from
(
select
col1,
col2,
somethingUnique
from
table1
union all
select
col1,
col2,
somethingUnique
from
table2
union all
select
col1,
col2,
somethingUnique
from
table3
) subby
join (
select
'Page1' as p1,
uniqueToTable1 as identy
from
dual
union all
select
'Page2' as p1,
uniqueToTable2 as identy
from
dual
union all
select
'Page3' as p1,
uniqueToTable3 as identy
from
dual
) pages
on subby.somethingUnique=pages.identy
)
如果每个表的唯一值(假设它在那里)是相当静态的,那么你可以在外部查询中使用简单的case语句而不是加入静态选择。
编辑2:
我确实想到了另一种可以实现的方法,但是将查询单独作为子查询运行,将输出结合起来(这很丑陋,但至少可能:
select
'page1' as page
col1,
col2
from
(
select
col1,
col2
// etc your first query that you would union
)
union all
select
'page2' as page
col1,
col2
from
(
select
col1,
col2
// etc your second query that you would union
)
// and so on...