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

PostgreSQL中如何获取未关联记录?附表结构与数据示例

查询客户ABC的全量商品价格记录(含未关联项)

要实现返回客户ABC(ID=1)对应的全部5条商品记录,不管price表中有没有建立关联,我们需要用左连接(LEFT JOIN)结合客户与商品的全组合来实现,具体步骤如下:

核心思路

我们需要先构建客户ABC与所有商品的完整配对(1个客户 × 5个商品 = 5条组合),再关联price表获取已设置的专属价格,未设置的则显示NULL(也可以按需用商品表的原始价格填充)。

实现SQL

SELECT
    c.id AS customer_id,
    c.customername,
    i.id AS item_id,
    i.product,
    i.price AS original_price,
    p.price AS customer_custom_price
FROM
    customer c
CROSS JOIN item i  -- 生成当前客户与所有商品的全量组合
LEFT JOIN price p 
    ON c.id = p.customerid 
    AND i.id = p.itemid
WHERE
    c.id = 1;  -- 锁定目标客户ABC(ID=1)

结果说明

执行这条SQL后,你会得到刚好5条记录:

  • 对于已在price表中关联的商品(SHOES,itemID=3),customer_custom_price会显示设置的320
  • 其他未关联的商品,customer_custom_price会显示NULL

如果希望未设置专属价格时直接显示商品的原始价格,可以用COALESCE函数优化字段,修改后的字段如下:

COALESCE(p.price, i.price) AS final_price

这样未设置客户专属价格的商品,就会直接显示item表中的原始价格。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 02:29:18