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

PostgreSQL中如何提取多关联表中date_added列的年月并去重?

实现多表关联年月数据的数据库端去重查询

方案说明

直接利用数据库的UNION操作合并多张关联表的年月数据,自动完成去重,后续新增表只需扩展SQL即可,不用改后端逻辑。

最终SQL代码

-- 提取tableOne中关联primaryTable的年月数据
SELECT DATE_FORMAT(date_added, '%m-%Y') AS month_year
FROM tableOne
WHERE EXISTS (
    SELECT 1 
    FROM primaryTable pt 
    WHERE pt.id = tableOne.primary_id -- 替换为实际关联字段
)
UNION
-- 提取tableTwo中关联primaryTable的年月数据
SELECT DATE_FORMAT(date_added, '%m-%Y') AS month_year
FROM tableTwo
WHERE EXISTS (
    SELECT 1 
    FROM primaryTable pt 
    WHERE pt.id = tableTwo.primary_id -- 替换为实际关联字段
)
UNION
-- 提取tableThree中关联primaryTable的年月数据
SELECT DATE_FORMAT(date_added, '%m-%Y') AS month_year
FROM tableThree
WHERE EXISTS (
    SELECT 1 
    FROM primaryTable pt 
    WHERE pt.id = tableThree.primary_id -- 替换为实际关联字段
);

重点提示

  • UNION自带去重效果,不需要额外加DISTINCT,比UNION ALL + DISTINCT效率更高
  • DATE_FORMAT的%m会输出两位月份(如01、12),如果需要一位月份可以换成%c
  • EXISTS用来过滤出和primaryTable关联的数据,确保数据关联性,替换语句中的primary_id为各子表实际的关联字段名
  • 后续新增关联表时,只需要在SQL末尾追加UNION + 新表的年月查询语句即可,无需修改后端代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:40:38