postgresql Postgres CASE表达式,然后为空

yc0p9oo0  于 2023-01-08  发布在  PostgreSQL
关注(0)|答案(2)|浏览(164)

下面的查询是我在应用程序中获得的选择查询的一部分

where 
case when o.tracking_id <> '0' then a.account_id is null
and 
o.status = 'N'

else
(

o.tracking_id = '0'
and 
o.status = 'N'

)
END

我很难理解下面这行
你能告诉我这到底是什么意思吗?

case when o.tracking_id <> '0' then a.account_id is null
jutyujz0

jutyujz01#

这里我不会使用CASE表达式,而是使用以下逻辑:

WHERE
    (o.tracking_id <> '0' AND a.account_id IS NULL AND o.status = 'N')
    OR
    (o.tracking_id = '0' AND o.status = 'N')
im9ewurl

im9ewurl2#

这个条件写得有些笨拙,它相当于下面这个更易读的表达式:

where (o.tracking_id = '0' or a.account is null)
and o.status = 'N';

相关问题