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

SQL查询不存在记录返回指定JSON值 是否有更简洁高效的实现

优化实现方案

核心逻辑是先构造你需要查询的所有目标ID集合,再和products表做左关联,不需要重复写子查询和UNION语句,性能和可读性都远优于你当前的实现:

SELECT json_build_object(
    'has_product', CASE WHEN p.product_id IS NOT NULL THEN 'true' ELSE 'false' END,
    'product_id', p.product_id
)
FROM (
    -- 此处填写所有需要查询的产品ID即可
    SELECT UNNEST(ARRAY[10, 65, 75]) AS target_id
) t
LEFT JOIN products p ON p.product_id = t.target_id;

如果你的数据库不支持UNNEST函数,可以用VALUES语法构造目标ID列表,兼容性更强:

SELECT json_build_object(
    'has_product', CASE WHEN p.product_id IS NOT NULL THEN 'true' ELSE 'false' END,
    'product_id', p.product_id
) FROM (
    VALUES (10), (65), (75)
) AS t(target_id)
LEFT JOIN products p ON p.product_id = t.target_id;

方案优势

  • 性能更高:仅需对products表执行一次查询,不会随查询ID数量上升线性增加查询次数
  • 维护成本更低:新增查询ID仅需在数组/VALUES列表中添加元素,无需重复编写逻辑代码
  • 完全匹配需求:存在的产品返回has_product=true和对应ID,不存在的产品自动返回has_product=false和product_id=null

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:15:05