我需要从两个选择中得到一个结果,然后比较它们。
它们的值应该返回0或1,如果其中一个是 1,那么它就是 1。1 总是比 0 具有更高的优先级。
这个:
- 第一个返回0,第二个返回1,然后是1。
- 第一个返回1,第二个返回0,然后是1。
- 两者都返回1,显然是1。
- 两者都返回0,最后是0。
将两个表达式包装起来GREATEST()
以返回最大值,1
如果其中一个是1
,0
如果两者都不是:
SELECT GREATEST(col1, col2) AS result
如果它跨越两个子选择:
SELECT GREATEST(
(SELECT col1 FROM tbl1 WHERE val='something'),
(SELECT col2 FROM tbl2 WHERE val='something else')
) AS result
只需将其包装在另一个 SELECT 中并使用 OR。MySQL 已经将 1 视为真,将 0 视为假。
试试这些:
SELECT (SELECT 1) OR (SELECT 0) AS result
// Returns 1
SELECT (SELECT 0) OR (SELECT 0) AS result
// Returns 0