簡體   English   中英

Postgres或排除運算符

[英]Postgres OR exclude operator

我有一個關於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,則不驗證另一個語句

您推薦哪一個?

您應該嘗試明智地使用OR關鍵字。 您的查詢應如下所示

select * from abc where a = True or (b= False and c = True)

現在看到您想要的是Xor,而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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM