SQL多个插入选择在一行中

时间:2016-02-08 02:42:27

标签: sql oracle

我是SQL的新手,我试图在我的表中放置有两个外键的值。

CREATE TABLE ROOM 
(
  ROOM_NAME VARCHAR2(40 BYTE) 
, PATIENT_ID NUMBER 
, DOC_NAME VARCHAR2(50 BYTE) 
) 
LOGGING 
TABLESPACE USERS 
PCTFREE 10 
INITRANS 1 
STORAGE 
( 
  INITIAL 65536 
  NEXT 1048576 
  MINEXTENTS 1 
  MAXEXTENTS UNLIMITED 
  BUFFER_POOL DEFAULT 
) 
NOPARALLEL;

ALTER TABLE ROOM
ADD CONSTRAINT DOC_ROOM FOREIGN KEY (DOC_NAME)
REFERENCES DOCTOR(DOC_NAME) ENABLE;

ALTER TABLE ROOM
ADD CONSTRAINT PATIENT_ROOM FOREIGN KEY (PATIENT_ID)
REFERENCES RECORD(ID) ENABLE;

使用 SQL Developer 中的左侧面板创建。如你所见,我有两个外键。我不知道如何为列Patient_IDDoc_Name添加值。

到目前为止,我所做的只是逐个插入表中,但这导致了三个不同的行。

我得到了什么:

   ROOM_NAME    | PATIENT_ID | DOC_NAME
---------------------------------------
 Emergency Room |    NULL    |   NULL
       NULL     |      1     |   NULL
       NULL     |    NULL    | Dr. John

我想要的是什么:

   ROOM_NAME    | PATIENT_ID | DOC_NAME
---------------------------------------
Emergency Room  |       1    | Dr. John

2 个答案:

答案 0 :(得分:0)

_.debounce = function(func, wait, immediate) { var timeout, args, context, timestamp, result; var later = function() { var last = (Date.now || new Date().getTime()) - timestamp; if (last < wait && last >= 0) { timeout = setTimeout(later, wait - last); } else { timeout = null; if (!immediate) { result = func.apply(context, args); if (!timeout) context = args = null; } } }; return function() { context = this; args = arguments; timestamp = _.now(); var callNow = immediate && !timeout; if (!timeout) timeout = setTimeout(later, wait); if (callNow) { result = func.apply(context, args); context = args = null; } return result; }; }; 将始终创建一个新行(除非违反某些约束)。

要一次插入包含所有值的行,请使用:

insert

如果要更改现有行,则需要使用UPDATE语句,例如:

insert into room 
   (ROOM_NAME, PATIENT_ID, DOC_NAME)
values 
   ('Emergency Room', 1, 'Dr. John');

您的update room set doc_name = 'Dr. House' where room_name = 'Emergency Room' and patient_id = 1; 表缺少主键,您应该添加一个唯一标识此表中行的内容。

答案 1 :(得分:-1)

没关系。看到另一个问题的答案。

insert into room values ('EmergencyRoom', (Select id from record where id = 1), (select doc_name from DOCTOR where doc_name = 'Dr. John'))