项目上要求查询一个项目的待选值。
(******注意查询条件的顺序******最下方有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之后的查询条件不满足的时候执行