Database 如何将表中的值插入同一数据库中的另一个表中?只从日期算起年份?
例如 我想在表A中插入值,但是表A中的年份值,我必须从表b中获取,并且只有'yyy'而不是整个日期 我会这样做吗Database 如何将表中的值插入同一数据库中的另一个表中?只从日期算起年份?,database,oracle,date,plsql,insert,Database,Oracle,Date,Plsql,Insert,例如 我想在表A中插入值,但是表A中的年份值,我必须从表b中获取,并且只有'yyy'而不是整个日期 我会这样做吗 CREATE TABLE A( YEAR NUMBER(4) NOT NULL, LENGTH NUMBER(5,2) NOT NULL, CONSTRAINT AVGYEAR_PKEY PRIMARY KEY(YEAR)) CREATE TABLE B( ID1 NUMBER(10) NOT NULL,
CREATE TABLE A(
YEAR NUMBER(4) NOT NULL,
LENGTH NUMBER(5,2) NOT NULL,
CONSTRAINT AVGYEAR_PKEY PRIMARY KEY(YEAR))
CREATE TABLE B(
ID1 NUMBER(10) NOT NULL,
DATE_DONE DATE NOT NULL,
CONSTRAINT TRIP_PKEY PRIMARY KEY (ID1),
);
如果我理解的很好,这可能是你需要的 说你有
insert into A VALUES(YEAR value,LENGTH value)
insert into A VALUES(select TO_CHAR((DATE_DONE),'YYYY') from B, 10.5);
用这个
SQL> select * from B;
ID1 DATE_DONE
---------- ---------
1 01-JAN-19
2 31-DEC-18
3 01-JUN-17
SQL> select * from A;
no rows selected
你会得到:
SQL> insert into a(year, length) select extract(year from date_done), 10 from B;
3 rows created.
如果您需要一个独特的
SQL> select * from A;
YEAR LENGTH
---------- ----------
2019 10
2018 10
2017 10
我尝试插入,但由于年份是主键,所以我必须使用DISTINCT函数,因为缺少括号错误。在A中插入从完成日期起的不同年份,从B中插入10;您只需要将DISTINCT放置在正确的位置,只是显示了一个示例
insert into a(year, length) select DISTINCT extract(year from date_done), 10 from B;