我想将数据从另一个表插入到一个表中。在某些列中我没有数据,所以我想将列设置为空。我不知道我应该怎么做?
这是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;
最佳答案
您的插入基本上是正确的。只是不要将列列表放在括号中:
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 不同)将列列表放在括号中会使结果成为单个“记录”,而不是单独的列。因此,选择仅返回一个单个列,而不是多个列,因此它与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;
关于SQL如何插入空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22442590/