我有一个关于postgres的查询,但是如果其中一个陈述是正确的,例如,我不想应用另一个where陈述:
SELECT
DISTINCT ON (pa.id) id,
pa.family_id,
pel.item_id,
pel.parent_id,
pel.group_id,
pel.coverage_type,
pel.start_date,
pel.end_date,
pel.updated_at,
pel.updated_by
FROM
patient pa
JOIN patient_eligibility_list pel ON pel.parent_id = pa.id
AND ((now()BETWEEN pel.start_dateAND pel.end_date)
OR (now() > pel.start_date)
OR (now() > pel.end_date))
WHERE
pel.group_id = 1575
AND pel.start_date < pel.end_date
ORDER BY
pel.end_date DESC;
在 where 条件下,我需要一个运算符,如果第一个语句为true,则不会验证另一个语句
您推荐哪个?
答案 0 :(得分:0)
您应该尝试明智地使用OR
关键字。
您的查询应该看起来像这样
select * from abc where a = True or (b= False and c = True)
答案 1 :(得分:0)
现在看到您想要的是Xgre,而postgres没有,所以我更新了代码以提供您想要的结果。
SELECT
DISTINCT ON (pa.id) id,
pa.family_id,
pel.item_id,
pel.parent_id,
pel.group_id,
pel.coverage_type,
pel.start_date,
pel.end_date,
pel.updated_at,
pel.updated_by
FROM
patient pa
JOIN patient_eligibility_list pel ON pel.parent_id = pa.id
AND ((now()BETWEEN pel.start_dateAND pel.end_date)
OR (now() > pel.start_date)
OR (now() > pel.end_date))
WHERE
(pel.group_id = 1575 and pel.start_date >= pel.end_date)
or
(pel.group_id != 1575 and pel.start_date < pel.end_date)
ORDER BY
pel.end_date DESC;