繁体   English   中英

SQL子查询表达式

[英]SQL subquery expression

SELECT  
    list_diagnosis_seq, list_diagnosis_icd10, 
    list_diagnosis_disease, list_diagnosis_diagtype
FROM    
    cmu_list_diagnosis, cmu_treatment
WHERE   
    (cmu_list_diagnosis.list_diagnosis_date = (SELECT MAX(list_diagnosis_date)  
                                               FROM cmu_list_diagnosis))
    AND cmu_list_diagnosis.treatment_id = (SELECT cmu_list_diagnosis.treatment_id
                                           FROM cmu_list_diagnosis, cmu_treatment 
                                           WHERE cmu_treatment.treatment_date = current_date
                                             AND cmu_treatment.patient_id = (SELECT cmu_patient.patient_id
                                                                             FROM cmu_patient, cmu_treatment
                                                                             WHERE cmu_patient.patient_id = cmu_treatment.patient_id));

我认为是错的

如何使此代码正确?

谢谢大家:)

AND cmu_list_diagnosis.treatment_id =(从cmu_list_diagnosis,cmu_treatment中选择cmu_list_diagnosis.treatment_id WHERE cmu_treatment.treatment_date =当前日期AND cmu_treatment.patient_id =(选择cmu_ Patient。Patient_id

在上面的两个“选择”引用中,都使用“前1个”或“使用IN”(选择...而不是“ =选择”

在不知道您的特定错误或DBMS的情况下,此翻译可能会帮助您:

SELECT ListDiagnosis.list_diagnosis_seq
    ,ListDiagnosis.list_diagnosis_icd10
    ,ListDiagnosis.list_diagnosis_disease
    ,ListDiagnosis.list_diagnosis_diagtype
FROM cmu_list_diagnosis AS ListDiagnosis
INNER JOIN cmu_treatment AS Treatment ON Treatment.treatment_id = ListDiagnosis.treatment_id
    AND Treatment.treatment_date = CURRENT_DATE
INNER JOIN cmu_patient AS Patient ON Patient.patient_id = Treatment.patient_id
WHERE ListDiagnosis.list_diagnosis_date = (
    SELECT MAX(list_diagnosis_date) AS MaxDate
    FROM cmu_list_diagnosis
);

这会将您的语法转换为ANSI语法,从而消除了子查询的双重嵌套。 INNER JOINs应该提供您要查找的筛选,并且WHERE子句子查询中日期的别名应消除某些数据库(例如Teradata)将引发的错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM