我需要一个sql,谁可以做如下事情:

SELECT col1, col2, cond4 as cond4_is_exclusive
FROM table
WHERE (cond1 AND cond2 AND cond3) OR cond4

其中cond4=(col3 IN(…)
我需要cond4_只有在cond4本身满足条件,而不是cond1、cond2和cond3满足条件时才是真的,因为它们之间存在OR。
有这样的解决办法吗?
我需要一个优雅的optim解决方案,因为查询要大得多,而且有更多的条件和更复杂的问题。
我现在的工作是:
SELECT col1, col2, (cond1 AND cond2 AND cond3) as c1, cond4 c2
    FROM table
    WHERE (cond1 AND cond2 AND cond3) OR cond4

后来用php检查了c2和c2

最佳答案

以下内容应该适用于Postgres(虽然对MySQL不太确定,但我很少使用它)

select *
from (
  SELECT col1, col2,
         (cond1 AND cond2 AND cond3) as c1,
         cond4 c2
  FROM table
) t
WHERE c1 OR c2

10-06 08:06