在我的前端,我有一个multiselect,允许用户过滤客户端。然而,用户可能只想用“country”和“bonus_points”进行过滤…留下其它滤波器未使用。
我有两个包含用户数据的表。。users和users_ext.如何创建一个查询来有条件地检查这些WHERE子句?
另外,作为奖励,我如何允许一个可选的EXCLUSION过滤器?是否可以在一个查询中完成所有这些?
SELECT uuid
FROM users
JOIN users_ext ON users.uuid = users_ext.uuid
WHERE ($1 IS NULL OR users_ext.country IN (ARRAY[$1])) AND
WHERE ($2 IS NULL OR users.birthday IN (ARRAY[$2])) AND
WHERE ($3 IS NULL OR users_ext.account_age IN (ARRAY[$3])) AND
WHERE ($4 IS NULL OR users_ext.bonus_points IN (ARRAY[$4]))
字符串
1条答案
按热度按时间falq053o1#
从一段有效的SQL开始,如下所示:
字符串
当你有一些过滤器时,添加额外的条件:
型
还有一个条件:
型
所有这些加在一起,你会得到这样的东西:
型
但是正如您所知道的,在(子)查询中只能有一个WHERE