表table1:只有一个字段A,数据是1、2、3、4。
表table2:也是一个字段A,数据是1、2、5、6。
能否一条语句就出来唯一数据的结果,也就是1、2、3、4、5、6。
表table2:也是一个字段A,数据是1、2、5、6。
能否一条语句就出来唯一数据的结果,也就是1、2、3、4、5、6。
解决方案 »
- Oracle存储过程中执行查询的问题
- 查询效率问题
- 如果查找的记录占整张表的比例很大(一般以7%为界),超过的话全表扫描更快
- oracle将一个结果集作为模糊查询条件改怎么写
- 游标问题,请大神帮解释下
- oracle的两表更新奇怪问题,请帮忙解释一下!
- 请教高手一个简单问题!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ★★“ORA:12541:TNS 没有监听器” 的问题★★
- 请问在本机上安装oracle8i的server端和client端后如何才能打开sql*plus呢?我在网上找了半天都没看到。
- 请教一个简单的SQL语句,解决马上结分。
- 比较有难度的SQL,100分求助!!!!
- Oracle 10g 调用web Service问题,请高手指点。急------
union
select a from table2;
union
select a from table2
union
select distinct a from table2
union
select a from table2
union
select a from table2
不行的话 外面在套一层循环,distinct一下
SQL> show user
USER 为 "SCOTT"SQL> ed
已写入 file afiedt.buf 1 CREATE TABLE table1(
2 a NUMBER
3* )
SQL> /表已创建。SQL> ed
已写入 file afiedt.buf 1 CREATE TABLE table2(
2 a NUMBER
3* )
SQL> /表已创建。SQL> ed
已写入 file afiedt.buf 1* INSERT INTO table1 VALUES(1)
SQL> /已创建 1 行。SQL> ed
已写入 file afiedt.buf 1* INSERT INTO table1 VALUES(2)
SQL> /已创建 1 行。SQL> ed
已写入 file afiedt.buf 1* INSERT INTO table1 VALUES(3)
SQL> /已创建 1 行。SQL> ed
已写入 file afiedt.buf 1* INSERT INTO table1 VALUES(4)
SQL> /已创建 1 行。SQL> ed
已写入 file afiedt.buf 1* INSERT INTO table2 VALUES(1)
SQL> /已创建 1 行。SQL> ed
已写入 file afiedt.buf 1* INSERT INTO table2 VALUES(2)
SQL> /已创建 1 行。SQL> ed
已写入 file afiedt.buf 1* INSERT INTO table2 VALUES(5)
SQL> /已创建 1 行。SQL> ed
已写入 file afiedt.buf 1* INSERT INTO table2 VALUES(6)
SQL> /已创建 1 行。SQL> select * from table1; A
----------
1
2
3
4SQL> select * from table2; A
----------
1
2
5
6SQL> ed
已写入 file afiedt.buf 1 select * from table1
2 union
3* SELECT * FROM table2
SQL> / A
----------
1
2
3
4
5
6已选择6行。SQL> ed
已写入 file afiedt.buf 1 select * from table1
2 union ALL
3* SELECT * FROM table2
SQL> / A
----------
1
2
3
4
1
2
5
6已选择8行。SQL>
with t1 as
(
select 1
from dual
union
select 2
from dual
union
select 3
from dual
union
select 4 from dual
),
t2 as
(
select 1
from dual
union
select 2
from dual
union
select 5
from dual
union
select 6 from dual
)
select * from t1
union
select * from t2
(
select 1
from dual
union
select 2
from dual
union
select 3
from dual
union
select 4 from dual
),
t2 as
(
select 1
from dual
union
select 2
from dual
union
select 5
from dual
union
select 6 from dual
)
select * from t1
union
select * from t2
create table tmp_001
(
cola varchar(20)
);
--插入测试数据
insert into tmp_001
select '1、2、3、4' from dual
union all
select '1、2、5、6' from dual;
commit;
--执行合并语句
select reverse(ltrim(max(SYS_CONNECT_BY_PATH(cola,',')),',')) 合并后的字符串 from
(
select row_number() over(order by cola) id,cola from (
select distinct substr(a.cola,b.id, instr(a.cola||'、','、',b.id,1)-b.id) cola
from tmp_001 a,(select rownum id from user_objects) b
WHERE b.ID<=length(a.cola)
AND substr('、'||a.cola,b.ID,1)='、') a
) a CONNECT BY id = PRIOR id - 1合并后的字符串
--------------------------------------------------------------------------------
1,2,3,4,5,6
1 row selected.
(
select 1
from dual
union
select 2
from dual
union
select 3
from dual
union
select 4 from dual
),
t2 as
(
select 1
from dual
union
select 2
from dual
union
select 5
from dual
union
select 6 from dual
)
select * from t1
union
select * from t2