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

SQL Server中合并两表去重并将结果赋值给变量的实现

合并两表数据并去重的SQL实现问题

需求说明

  • Table1仅含value列,数据:er3, 5ty, 5y6, 72j, 98e, sf1, 3mn, 9w2
  • Table2仅含value列,数据:r5k, ad8, 5ty, sf1, 34x
  • 预期结果:合并后无重复记录,保留Table1所有数据,仅加入Table2中未在Table1出现的记录,最终结果为:er3, 5ty, 5y6, 72j, 98e, sf1, 3mn, 9w2, r5k, ad8, 34x

错误尝试1:JOIN语句未达预期

最初尝试用JOIN查询,仅返回两表交集数据,无法满足需求:

SELECT value 
FROM Table1 T1
JOIN Table2 T2 ON T2.value = T1.value
WHERE T2.value IS NOT NULL

错误尝试2:UNION直接赋值变量报错

使用UNION可实现合并去重,但直接将结果赋值给变量@UpdatedValues时触发错误:

SELECT @UpdatedValues = SELECT value FROM Table1 
UNION 
SELECT value FROM Table2

错误提示:
Variable assignment is not allowed in a statement containing a top level UNION, INTERSECT or EXCEPT operator

最终解决方案

参考MartinSmith的建议,通过子查询结合STRING_AGG函数,将合并去重后的结果拼接为字符串并赋值给变量:

SELECT @UpdatedValues = STRING_AGG(d.value, ',')  
WITHIN GROUP(ORDER BY value) 
FROM (SELECT value FROM Table1 UNION SELECT value FROM Table2) d

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 15:52:17