MySQL跨不同数据库连接两表,对重复ID库存求和并展示唯一ID
在MySQL中实现跨数据库表的库存求和需求
当然可以实现!这需求用MySQL的基础语法就能轻松搞定,我给你拆解下思路和具体代码:
核心思路
我们需要先把两个不同数据库里的products表的所有记录合并到一起,然后对相同ID的库存值进行求和。这里要注意用UNION ALL而不是UNION——因为UNION会自动去重,而我们需要保留所有原始的库存记录来做求和计算,UNION ALL只是单纯合并,效率也更高。
具体SQL代码
-- 合并两个数据库的products表所有记录,再按ID分组求和 SELECT ID, SUM(Stock) AS Stock FROM ( -- 从db1取所有产品记录 SELECT ID, Stock FROM db1.products UNION ALL -- 从db2取所有产品记录 SELECT ID, Stock FROM db2.products ) AS combined_products GROUP BY ID -- 按ID排序,让结果更符合预期的展示顺序 ORDER BY ID;
执行结果验证
执行上述SQL后,你会得到完全符合预期的结果:
- ID 1: 10 + 3 = 13
- ID 2: 20 + 5 = 25
- ID 3: 30(仅存在于db1)
- ID 4: 40(仅存在于db2)
小提示
- 确保两个表的
ID和Stock字段类型一致(比如都是INT类型),避免合并时出现类型转换异常; - 如果需要筛选特定ID或者库存范围,可以在子查询的
SELECT语句后添加WHERE条件,或者在聚合后用HAVING过滤结果。
内容的提问来源于stack exchange,提问作者Alexander
相关产品推荐
相关产品推荐

