[英]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.