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

如何在SQL视图中实现关联表指定列去重的内连接查询

SQL视图实现方案

你可以先对TableB的account列做去重处理后再参与关联,有两种常用实现方式:

方式1:子查询先对TableB去重

直接在关联前用DISTINCT筛选出TableB唯一的account值再做内连接,代码逻辑直观易读:

CREATE VIEW 你的视图名称 AS
SELECT a, b, c, d
FROM TableA
INNER JOIN (
    SELECT DISTINCT account FROM TableB
) AS UniqueB ON TableA.account = UniqueB.account;

这种写法会先过滤掉TableB中重复的account值,仅用唯一值和TableA关联,最终返回的a、b、c、d全部来自TableA,不会做额外去重处理,完全符合需求。

方式2:用EXISTS关键字实现

多数数据库对EXISTS查询有优化,执行效率通常更高,效果和方式1完全一致:

CREATE VIEW 你的视图名称 AS
SELECT a, b, c, d
FROM TableA
WHERE EXISTS (
    SELECT 1 FROM TableB WHERE TableB.account = TableA.account
);

这种写法只要TableB中存在任意一条匹配的account记录,就会返回对应的TableA行,天然避免了TableB重复account导致的结果行膨胀,也不需要对最终返回字段做去重。

补充说明:如果后续需要关联返回TableB的其他字段,只需要在方式1的子查询中添加对应字段,同时保证DISTINCT作用的字段组合无重复即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:45:08