我需要一个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