You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails或PostgreSQL查询指定SKU无匹配时返回价格为0的方法

PostgreSQL 原生实现方案

你可以通过左关联临时SKU列表的方式直接返回符合要求的结果,无需额外遍历处理,SQL语句如下:

SELECT 
  s.sku,
  COALESCE(p.price, 0) AS price
FROM unnest(ARRAY['001', '002', '003']) AS s(sku)
LEFT JOIN products p ON p.sku = s.sku;

逻辑说明:先用unnest将你需要查询的SKU数组转为临时行表,再和商品表左关联,用COALESCE函数将不存在的SKU对应的空价格默认设为0,查询结果会直接包含所有你指定的SKU。

Rails 层面实现方案

如果不想写原生SQL,也可以用Rails自带的方法快速生成目标哈希,全程不需要手动写循环遍历:

# 定义你需要查询的SKU列表
target_skus = ['001', '002', '003']
# 查出数据库中存在的SKU对应的价格,转成哈希
exist_sku_map = Product.where(sku: target_skus).pluck(:sku, :price).to_h
# 生成带默认值的完整结果哈希
result = target_skus.index_with { |sku| exist_sku_map.fetch(sku, 0) }

最后直接调用result.to_json就能得到你要求的JSON格式输出。

内容的提问来源于stack exchange,提问作者Remy Wang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 16:54:04