Ich arbeite an Postgres und die folgende Abfrage scheint nie zu beenden, aber es ist nur das letzte OR, das ein Problem verursacht, läuft es gut, wenn ich es auskommentieren. Ist es nur eine ineffiziente Art, es zu schreiben? Wenn dem so ist, kann ich mir keine Alternative vorstellen.SQL Multiple ODER BETWEENS
SELECT a.subject_id, a.hadm_id, a.admittime, d.icd9_code, l.short_title, d.seq_num
FROM mimiciii.admissions a
INNER JOIN mimiciii.diagnoses_icd d
ON a.subject_id = d.subject_id
AND a.hadm_id = d.hadm_id
INNER JOIN mimiciii.d_icd_diagnoses l
ON d.icd9_code = l.icd9_code
WHERE a.subject_id IN
(SELECT DISTINCT d.subject_id
FROM mimiciii.diagnoses_icd d
WHERE d.icd9_code BETWEEN '390%' and '459%')
AND d.icd9_code NOT IN
(SELECT d.icd9_code
FROM mimiciii.diagnoses_icd d
WHERE d.icd9_code BETWEEN 'V01%' AND 'V91%'
OR d.icd9_code BETWEEN 'E000%' AND 'E999%'
OR d.icd9_code BETWEEN '630%' AND '679%'
OR d.icd9_code BETWEEN '760%' AND '999%'
)
ORDER BY subject_id, admittime
Vielen Dank, aber die Platzhalter funktionieren. – Sam
@Sam. . . Sie tun nicht, was du denkst, dass sie tun. Sie sind keine Platzhalter; Sie sind nur das "%", was wirklich irreführend für jeden ist, der die Abfrage liest (einschließlich Sie in der Zukunft). –