SQL如何插入空值

时间:2014-03-16 20:33:13

标签: sql postgresql insert null

我想从另一个表中将数据插入一个表中。在某些列中,我没有数据,因此我想将列设置为null。我不知道该怎么做?

这是SQL:

INSERT INTO _21Appoint(
   PCUCODE,PID,SEQ,
   DATE_SERV,APDATE,
   APTYPE,APDIAG,D_UPDATE,CID
) SELECT (
   NULL,NULL,NULL,
   treatment_date,appointment_date,
   typeap_id,appointment_id,NULL,patient_id
) FROM cmu_treatment,cmu_appointment
  WHERE cmu_treatment.treatment_id LIKE cmu_appointment.treatment_id;

1 个答案:

答案 0 :(得分:2)

您的插入基本上是正确的。只是不要将列列表放在括号中:

INSERT INTO _21Appoint
  (PCUCODE,PID,SEQ,DATE_SERV,APDATE,APTYPE,APDIAG,D_UPDATE,CID)
SELECT NULL,NULL,NULL,treatment_date,appointment_date,typeap_id,appointment_id,NULL,patient_id
FROM cmu_treatment,cmu_appointment
WHERE cmu_treatment.treatment_id LIKE cmu_appointment.treatment_id;

在Postgres中(与其他DBMS不同)将列列表放在括号中会使结果成为单个"记录"而不是单个列。因此,select仅返回单个列,而不是多个,因此它不匹配insert的列列表

另一个选择就是完全省略列:

INSERT INTO _21Appoint
  (DATE_SERV,APDATE,APTYPE,APDIAG,CID)
SELECT treatment_date,appointment_date,typeap_id,appointment_id,patient_id
FROM cmu_treatment,cmu_appointment
WHERE cmu_treatment.treatment_id LIKE cmu_appointment.treatment_id;