2017-10-08 69 views
0

有没有一种方法来简化以下?第一个非假值

CASE WHEN 
    (a.is_future_release IS TRUE OR aa.is_future_release IS TRUE) THEN TRUE 
    ELSE FALSE 
END 

在Python中我会做:

a.is_future_release or aa.is_future_release or False 

可这在MySQL/SQL被简化?

+0

的[我该怎么办布尔逻辑上的两列在MySQL?(https://stackoverflow.com/questions/248683/how-can-i-do-boolean-logic-on-two-columns可能的复制-in-mysql的) –

+0

@ DanielA.White但如果我不'a.is_future_release | aa.is_future_release'如果两者计算结果为假返回'NULL'不为0 – David542

回答

1

这难道不是你想要做什么?

(a.is_future_release OR aa.is_future_release) 

在MySQL中,布尔值被视为整数,值为“1”为真,“0”为false。

这和你的原始查询唯一的区别是,如果两个值都是NULL,这可能会返回NULL

+2

你可以包装在'COALESCE整个事情( ,0)',以避免返回'null'值。 – cars10m

0

IF说法是有点清洁:

IF(a.is_future_release IS TRUE OR aa.is_future_release IS TRUE, TRUE, FALSE) 

或者使用布尔运算符/速记:

IF(a.is_future_release|aa.is_future_release, TRUE, FALSE) 
相关问题