PostgreSQL的条件where子句
问题描述:
在我的Ruby on Rails应用程序我用夹克(https://github.com/ankane/blazer),我有以下SQL查询:PostgreSQL的条件where子句
SELECT *
FROM survey_results sr
LEFT JOIN clients c ON c.id = sr.client_id
WHERE sr.client_id = {client_id}
该查询的作品真的很好。但我需要添加条件逻辑来检查client_id变量是否存在。如果是的话,我过滤这个变量,如果不是,那么我不会启动这个where
子句。我怎样才能在PostgreSQL中做到这一点?
答
检查其空或您的情况是这样的:
WHERE {client_id} IS NULL OR sr.client_id = {client_id}
的WHERE
条款评价如下:如果变量是空的,那么WHERE
子句评估为true,因此 - 没有过滤。如果不是,则继续下一个条件OR