我正在尝试从Oracle SQL数据库中提取两个表,并希望按顺序联接它们,因此它们看起来好像是一个列表。
列表中有项[1,2,3,4]
清单2中有[a,b,c,d]
个项目
我想输出[1,2,3,4,a,b,c,d]
有什么想法吗?
答案 0 :(得分:1)
一个选项使用带有计算列的UNION
:
SELECT val
FROM
(
SELECT val, 1 AS position FROM table1
UNION ALL
SELECT val, 2 AS position FROM table2
) t
ORDER BY
position, val;
请注意,我假设这里的所有数据都是文本。如果没有,例如第一个表是数字表,那么我们将不得不进行强制转换。但是,这仍然不是您问题的主要重点。
答案 1 :(得分:0)
使用并集,我认为1,2,3作为数值,为什么要在varchar
上将其转换为与并集相同的数据类型
with t1 as (
select 1 as id from dual union all
select 2 from dual union all
select 3 from dual union all
select 4 from dual
), t2 as (
select 'a' as item from dual union all
select 'b' from dual union all
select 'c' from dual union all
select 'd' from dual
)
select cast(id as varchar(20)) as id from t1
union
select * from t2
output
1
2
3
4
a
b
c
d
答案 2 :(得分:0)
SELECT id_1, value_column1 from table_1
UNION
SELECT id_2, value_column2 from table_2;
如果列的类型不同-请确保将其强制转换/转换为char()-结果类型应相同。 https://docs.oracle.com/cd/B19306_01/server.102/b14200/queries004.htm