You need to enable JavaScript to run this app. SQL 如何查询多个表同一列的所有唯一值?
优惠活动
大模型
产品
解决方案
定价
更多

SQL 如何查询多个表同一列的所有唯一值?

跨多表提取Name列唯一值的SQL实现
  • 最通用的基础实现方式是利用SQL原生的UNION集合运算,它会在合并多表查询结果的过程中自动完成去重,无需额外叠加去重逻辑,可直接适配无参考表依赖的场景。
    对应查询语句:
    SELECT Name FROM table1
    UNION
    SELECT Name FROM table2
    UNION
    SELECT Name FROM table3;
    
  • 上述语句的执行结果完全匹配需求:三个表中重复出现的Adam、表1和表3中重复出现的David会被自动合并为单条记录,最终返回的结果集合为Adam、David、Conor、Derek、Niall、John,完全适配无排序要求的使用场景。
  • 结合你提到的“所有Name值都关联到names参考表”的场景,如果需要在提取过程中同步校验Name值的合法性,可改写为关联参考表的查询形式:
    SELECT n.Name
    FROM names n
    WHERE n.ID IN (SELECT ID FROM table1)
    UNION
    SELECT n.Name
    FROM names n
    WHERE n.ID IN (SELECT ID FROM table2)
    UNION
    SELECT n.Name
    FROM names n
    WHERE n.ID IN (SELECT ID FROM table3);
    

注意事项:不要使用UNION ALL替代UNION实现需求。UNION ALL会全量保留所有查询返回的重复行,若要达到去重效果,需要额外嵌套一层去重逻辑(如SELECT DISTINCT Name FROM (用UNION ALL拼接多表结果的子查询) AS temp),这种写法的执行效率通常低于直接使用UNION,因为需要先拉取全量重复数据再做二次扫描去重。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 13:45:05