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

PostgreSQL表过滤:保留含promo的订单全部关联记录

PostgreSQL查询:保留含"promo"类型的订单所有记录

嘿,这个需求很常见,我给你几个靠谱的PostgreSQL查询方案,你可以根据自己的表大小和使用习惯来选:

方法1:子查询 + IN 子句

这是最直观的写法,先找出所有包含promo类型的订单号,再用这些订单号筛选全表记录:

SELECT *
FROM your_table_name
WHERE order_number IN (
    SELECT order_number
    FROM your_table_name
    WHERE line_type = 'promo'
);

方法2:EXISTS 半连接(推荐大表使用)

如果你的表数据量比较大,EXISTS的性能会更优,因为它是半连接逻辑——只要找到匹配的记录就停止检索,不用返回所有子查询结果:

SELECT t.*
FROM your_table_name t
WHERE EXISTS (
    SELECT 1
    FROM your_table_name t2
    WHERE t2.order_number = t.order_number
      AND t2.line_type = 'promo'
);

方法3:CTE + JOIN(可读性优先)

如果需要更清晰的逻辑拆分,用公共表表达式(CTE)先提取出目标订单号,再和原表关联,可读性会更好:

WITH promo_orders AS (
    SELECT DISTINCT order_number
    FROM your_table_name
    WHERE line_type = 'promo'
)
SELECT t.*
FROM your_table_name t
JOIN promo_orders po ON t.order_number = po.order_number;

小提示

记得把上面代码里的your_table_name替换成你实际的表名称哦!

内容的提问来源于stack exchange,提问作者R.Illum

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:13:29