如何扩展PostgreSQL查询范围以获取所有国家符合条件的客户记录
修改方案
你原查询的问题在于IN子查询仅返回美国客户的ID,导致所有非美国的客户记录都被过滤。直接调整WHERE子句的逻辑即可满足需求:
SELECT id, firstname, lastname, address1, state, country FROM customer WHERE country <> '' AND ( country != 'US' OR (state IS NOT NULL AND state <> '') )
逻辑说明
- 保留
country <> ''条件,确保所有返回记录都已填写国家字段 - 新增的组合判断逻辑:
- 若客户国家不是US,只要国家字段已填写就符合要求
- 若客户国家是US,需要同时满足州字段不为空、且州字段不是空字符串才符合要求
另外注意原查询的SELECT列表中country字段后多了一个多余的逗号,上述修改后的语句已经移除了该语法问题。
内容的提问来源于stack exchange,提问作者Trouble Bucket
相关产品推荐
相关产品推荐

