insert into table a(a1,a2) select (b1,b2) from b ,这样操作的目的是想把列a1,a2, 插入到表b 的b1,b2 中,
如图所示:(a1,a2,a3 分别为表a 的三个列名)
a1 a2 a311 22 null
1 2 null
但是 再执行这样的操作时insert into a(a3) select d3 from d ,结果是这样的:
a1 a2 a311 22 null
1 2 null
null null a33
null null 22而我想要的结果是:
a1 a2 a3
11 22 33
1 2 22我应该如何写? 我的目的就是想插入时 不让其他列产生空值,而是从第一行开始,高人指点!
如图所示:(a1,a2,a3 分别为表a 的三个列名)
a1 a2 a311 22 null
1 2 null
但是 再执行这样的操作时insert into a(a3) select d3 from d ,结果是这样的:
a1 a2 a311 22 null
1 2 null
null null a33
null null 22而我想要的结果是:
a1 a2 a3
11 22 33
1 2 22我应该如何写? 我的目的就是想插入时 不让其他列产生空值,而是从第一行开始,高人指点!
insert into table a(a1,a2) select (b1,b2) from b ,这样操作的目的是想把列a1,a2, 插入到表b 的b1,b2 中,
如图所示:(a1,a2,a3 分别为表a 的三个列名)
a1 a2 a3 11 22 null
1 2 null
但是 再执行这样的操作时insert into a(a3) select d3 from d ,结果是这样的:
a1 a2 a3 11 22 null
1 2 null
null null a33
null null 22 而我想要的结果是:
a1 a2 a3
11 22 33
1 2 22
UPDATE好了。
--------------------------------------------
关系数据库中的数据是无序的,没有“第一行”的概念。
楼主需要学习一下关系数据库和SQL的基础知识。
update a set a3=(select d3 from d)
为什么这样写不对啊,如何写表示更新列a3 呢?
select x.b1, x.b2, y.b3 from
(select rownum rn, b1, b2 from b) x
full outer join
(select rownum rn, d3 from d) y
on x.rn = y.rn
然后update a set a3 =(select d3 from d) where a1=a1
DROP TABLE b;
CREATE TABLE a(a1 INT,a2 INT,a3 INT);
--ALTER TABLE a ADD CONSTRAINT pk_a PRIMARY KEY(a1);
CREATE TABLE b(d3 INT);
INSERT INTO a VALUES(11,22,NULL);
INSERT INTO a VALUES(1,2,NULL);
INSERT INTO b VALUES(33);
INSERT INTO b VALUES(22);
COMMIT;
SELECT * FROM a;
SELECT * FROM b;
UPDATE A
SET A.A3 = (SELECT Y.D3
FROM (SELECT ROWID RID, ROWNUM RN FROM A) X,
(SELECT D3, ROWNUM RN FROM B) Y
WHERE X.RN = Y.RN
AND X.RID = A.ROWID)
WHERE EXISTS (SELECT Y.D3
FROM (SELECT ROWID RID, ROWNUM RN FROM A) X,
(SELECT D3, ROWNUM RN FROM B) Y
WHERE X.RN = Y.RN
AND X.RID = A.ROWID);
SELECT *FROM a;
输出:
A1 A2 A3
11 22 33
1 2 22