Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何将表中的值插入同一数据库中的另一个表中?只从日期算起年份?_Database_Oracle_Date_Plsql_Insert - Fatal编程技术网

Database 如何将表中的值插入同一数据库中的另一个表中?只从日期算起年份?

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,

例如

我想在表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,
    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;