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

如何关联Mid字段相同的两张表并查询distinct posid

解决方法:获取两张关联表中不重复的posid值

没问题,刚好有几种简洁的方式能实现你想要的结果——基于Mid字段关联两张表,取出所有不重复的posid值。先确认下你的表数据:

table1数据:

nameposIdMid
sam110
sid110
jeet110

table2数据:

nameposidMid
Anin210
Nir210
jeev210

方法1:用UNION直接合并去重(最推荐)

UNION操作符本身就会自动合并结果并去除重复值,完全符合你的需求,写法也最简洁:

-- 统一列名为posid,确保结果列名一致
SELECT posId AS posid
FROM table1
WHERE Mid = 10
UNION
SELECT posid
FROM table2
WHERE Mid = 10;

这个语句会先分别从两张表中筛选出Mid=10的posid(table1的posId别名为posid来匹配table2的字段名),再通过UNION自动去重,最终得到posid为1和2的结果。

方法2:关联表后用DISTINCT去重(适合需要显式关联的场景)

如果需要明确基于Mid字段关联两张表再去重,可以用全连接(FULL JOIN)配合DISTINCT:

SELECT DISTINCT 
  -- 取非空的posid值,兼容其中一张表无匹配的情况
  COALESCE(t1.posId, t2.posid) AS posid
FROM table1 t1
FULL JOIN table2 t2 
  ON t1.Mid = t2.Mid
WHERE t1.Mid = 10 OR t2.Mid = 10;

不过这种方法相比UNION会稍显复杂,除非你有额外的关联需求,否则更推荐第一种方法。

注意:如果你的数据库对字段大小写敏感(比如PostgreSQL默认设置),要注意table1的posId和table2的posid是不同字段,统一别名就可以避免问题啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:14:05