我有两张表NAVEEN_T1和NAVEEN_T2,其中包含Id和Name等列。
如何根据Id?
交换两个表的名称列值SQL> SELECT * FROM NAVEEN_T1; ID NAME ---------- ---------- 1 GOLDI 2 NAVEEN 3 AMIT SQL> SELECT * FROM NAVEEN_T2; ID NAME ---------- ---------- 1 RANJAN 2 SOM 3 ABHAY
我希望输出如下:
SQL> SELECT * FROM NAVEEN_T1; ID NAME ---------- ---------- 1 RANJAN 2 SOM 3 ABHAY SELECT * FROM NAVEEN_T2; ID NAME ---------- ---------- 1 GOLDI 2 NAVEEN 3 AMIT
提前致谢。
答案 0 :(得分:0)
update table1 t1
set t1.col1 = (select t2.col2
from table2 t2
where t2.id = t1.id
and t1.col1 < t1.col2)
这样的事情应该很容易做到。
我看到的唯一棘手的问题是将table2中的行与table1中的行匹配。在我的例子中,我认为两个表共享一个唯一的&#34; id&#34;能够轻松匹配的列。使用更合适的内容修改查询。
答案 1 :(得分:0)
CREATE TABLE naveen_t1
(`id` int, `name` varchar(6))
;
INSERT INTO naveen_t1
(`id`, `name`)
VALUES
(1, 'GOLDI'),
(2, 'NAVEEN'),
(3, 'AMIT')
;
CREATE TABLE naveen_t2
(`id` int, `name` varchar(6))
;
INSERT INTO naveen_t2
(`id`, `name`)
VALUES
(1, 'RANJAN'),
(2, 'SOM'),
(3, 'ABHAY')
;
create table naveen_t1_b
as
select * from naveen_t1;
create table naveen_t2_b
as
select * from naveen_t2;
update naveen_t1 ta set ta.name=(select tb.name
from naveen_t2_b tb where tb.id=ta.id);
update naveen_t2 ta set ta.name=(select tb.name
from naveen_t1_b tb where tb.id=ta.id);
select * from naveen_t1;
select * from naveen_t2;
希望这会解决您的问题,我创建了备份表来捕获值。 您可以使用临时表而不是永久表
答案 2 :(得分:0)
现在,这可能过于简单,但嘿 - 这就是您的样本数据所暗示的内容。这个想法是:交换表名,而不是数据。看看:
SQL> create table naveen_t1 (id number, name varchar2(20));
Table created.
SQL> create table naveen_t2 (id number, name varchar2(20));
Table created.
SQL> insert all
2 into naveen_t1 values (1, 'GOLDI')
3 into naveen_t1 values (2, 'NAVEEN')
4 into naveen_t1 values (3, 'AMIT')
5 --
6 into naveen_t2 values (1, 'RANJAN')
7 into naveen_t2 values (2, 'SOM')
8 into naveen_t2 values (3, 'ABHAY')
9 select * from dual;
6 rows created.
SQL> select * From naveen_t1;
ID NAME
---------- --------------------
1 GOLDI
2 NAVEEN
3 AMIT
SQL> select * From naveen_t2;
ID NAME
---------- --------------------
1 RANJAN
2 SOM
3 ABHAY
这是技巧:
SQL> rename naveen_t2 to temp;
Table renamed.
SQL> rename naveen_t1 to naveen_t2;
Table renamed.
SQL> rename temp to naveen_t1;
Table renamed.
SQL> select * from naveen_t1;
ID NAME
---------- --------------------
1 RANJAN
2 SOM
3 ABHAY
SQL> select * From naveen_t2;
ID NAME
---------- --------------------
1 GOLDI
2 NAVEEN
3 AMIT
SQL>