首页 > 解决方案 > 如何不在 Postgres 中运行 else 语句?

问题描述

我正在学习 Postgres。当我不写下 else 语句时,我的表什么也没有返回。当布尔值为假时,我试图呈现所有用户。

SELECT * FROM users u
JOIN posts p
ON u.id = p.author_id
    AND CASE WHEN true   // if true then render u.id = 5
        THEN  u.id = 5
        ELSE  ???        // else render all users
    END

标签: postgresql

解决方案


带有适当括号的简单语句AND/ OR比表达式更清楚,并且比CASE检查WHERE子句/ON部分 JOIN中的条件组合的表达式更好

SELECT * FROM users u
  JOIN posts p
ON u.id = p.author_id AND 
(
   ( some_condition = true AND u.id = 5 )
OR   some_condition = false
 );

推荐阅读