pgsql通过不同的查询条件依次显示不同的查询结果 OR EXISTS

项目上要求查询一个项目的待选值。

(******注意查询条件的顺序******最下方有pgsql的截图)

1.如果不是管理员,查询自己关联的项目。

2.如果是管理员,查询全部的

SELECT
    * 
FROM
    ITSM_PROVISIONPROJECTADMINISTRATION a
WHERE
    (a.itsm_id in (select itsm_provision_id from ITSM_USER_PROVISION where itsm_user_id ='c62a41862c7a47f195ecff02852ef2b3')) 
    OR EXISTS 
    (SELECT 1 FROM TS_FLOW_JS_BM A INNER JOIN TS_FLOW_JS B ON A.ts_js_id = B.ts_js_id WHERE B.TS_BM = 'PX202401100120' AND A.TS_USER_ID = 'c62a41862c7a47f195ecff02852ef2b3' )

注解:

 (a.itsm_id in (select itsm_provision_id from ITSM_USER_PROVISION where itsm_user_id ='c62a41862c7a47f195ecff02852ef2b3')) ——pgsql语句为查询一个关联条件的表,优先以这个为查询条件进行查询,其次查询EXISTS 子查询的条件

(SELECT 1 FROM TS_FLOW_JS_BM A INNER JOIN TS_FLOW_JS B ON A.ts_js_id = B.ts_js_id WHERE B.TS_BM = 'PX202401100120' AND A.TS_USER_ID = 'c62a41862c7a47f195ecff02852ef2b3' )——pgsql语句为查询管理员的查询条件,当前条件一满足之后,查询条件二是否满足,如果条件二满足,将忽略条件一的查询条件

可以理解为 OR EXISTS之前的查询条件仅在 OR EXISTS之后的查询条件不满足的时候执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值