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

如何创建UNION查询合并两表并返回物品最新盘点日期?

没问题,我来帮你搞定这个需求!首先咱们得先明确两张表的结构,假设两张表都包含物品标识(比如item_id)、物品名称(item_name)和盘点日期(stock_date)这几个核心字段——要是你的字段名不一样,直接替换成你实际的就行。

方案一:合并后分组取最新日期(适合只需要日期的场景)

这种方法先用UNION ALL把两张表的所有记录合并(用UNION ALL比UNION更高效,因为不会额外做去重;如果你的两张表有完全重复的记录,再换成UNION),然后按物品分组,取每个物品的最大盘点日期。

具体SQL代码如下:

SELECT 
    item_id,
    item_name,
    MAX(stock_date) AS latest_stock_date
FROM (
    -- 合并两张表的核心数据
    SELECT item_id, item_name, stock_date FROM inventory_table_a
    UNION ALL
    SELECT item_id, item_name, stock_date FROM inventory_table_b
) AS combined_inventory
GROUP BY item_id, item_name;

逻辑说明:

  1. 子查询combined_inventory通过UNION ALL把两张表的物品、日期数据合并成一个临时数据集;
  2. 外层查询按物品的唯一标识(item_id)和名称分组,用MAX(stock_date)直接拿到每个物品的最新盘点日期。
方案二:用窗口函数获取完整的最新记录(适合需要更多字段的场景)

如果你除了日期,还需要该最新盘点记录的其他信息(比如盘点数量、存放位置),用窗口函数ROW_NUMBER()会更灵活,能精准定位到每个物品的最新那条记录:

SELECT 
    item_id,
    item_name,
    stock_date AS latest_stock_date,
    stock_quantity -- 示例:假设还有盘点数量字段,可替换成你需要的其他字段
FROM (
    SELECT 
        item_id,
        item_name,
        stock_date,
        stock_quantity,
        -- 按物品分组,按盘点日期倒序排序,最新的记录会被标记为1
        ROW_NUMBER() OVER (PARTITION BY item_id ORDER BY stock_date DESC) AS rn
    FROM (
        SELECT item_id, item_name, stock_date, stock_quantity FROM inventory_table_a
        UNION ALL
        SELECT item_id, item_name, stock_date, stock_quantity FROM inventory_table_b
    ) AS combined_inventory
) AS ranked_inventory
WHERE rn = 1;

逻辑说明:

  1. 最内层先合并两张表的所有相关字段;
  2. 中间层用ROW_NUMBER()给每个物品的记录按日期从新到旧编号,最新的记录编号为1;
  3. 外层筛选出编号为1的记录,就能得到每个物品的完整最新盘点信息。
几个注意点
  • 要是两张表的字段不完全一致,比如表A有stock_location而表B没有,那在子查询里给表B的对应字段补NULL即可,比如SELECT item_id, item_name, stock_date, NULL AS stock_location FROM inventory_table_b;
  • 如果你的物品唯一标识只有item_id,那GROUP BY或者PARTITION BY只需要item_id就行,不用带item_name;
  • 确保stock_date是日期/时间类型,不然MAX()和排序逻辑会出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:17:21