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

MySQL如何创建仅返回与另一表4个Person列ID匹配的PAR表信息视图

问题原因

你当前的SQL会返回重复记录,不符合需求的核心原因是:使用两表关联的方式时,若同一个PAR表的用户ID在THE_GROUP表的多个分组、或同一分组的多个Person字段中匹配,会生成多条相同的PAR记录。

修正方案

方案1:加DISTINCT去重(最简单的修改方式)

将原有查询加DISTINCT关键字去除重复行,同时替换隐式逗号关联为显式JOIN,提升可读性:

CREATE OR REPLACE VIEW MY_VIEW AS
SELECT DISTINCT P.Name, P.State
FROM PAR P
INNER JOIN THE_GROUP G 
ON G.Person1 = P.ID OR G.Person2 = P.ID OR G.Person3 = P.ID OR G.Person4 = P.ID;

方案2:使用EXISTS子查询(性能更优,语义更贴合需求)

不需要关联两表,直接通过EXISTS判断PAR记录是否存在匹配的分组,天然不会生成重复数据,数据量大时执行效率远高于方案1:

CREATE OR REPLACE VIEW MY_VIEW AS
SELECT P.Name, P.State
FROM PAR P
WHERE EXISTS (
    SELECT 1 FROM THE_GROUP G
    WHERE P.ID IN (G.Person1, G.Person2, G.Person3, G.Person4)
);

执行结果验证

两种方案最终返回的视图数据完全符合需求:

NameState
SusanNew York
BobTexas
TonyWashington
AdamCalifornia

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:36:02