如何依次添加两列(而不是串联)?

时间:2018-10-04 13:26:44

标签: sql oracle

我正在尝试从Oracle SQL数据库中提取两个表,并希望按顺序联接它们,因此它们看起来好像是一个列表。

列表中有项[1,2,3,4] 清单2中有[a,b,c,d]个项目 我想输出[1,2,3,4,a,b,c,d]

有什么想法吗?

3 个答案:

答案 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;

Demo

请注意,我假设这里的所有数据都是文本。如果没有,例如第一个表是数字表,那么我们将不得不进行强制转换。但是,这仍然不是您问题的主要重点。

答案 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

demo

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