栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何从视图中删除“重复”行?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何从视图中删除“重复”行?

如果行中有任何不同的列,DISTINCT不会为您提供帮助。显然,您要连接的一个表在另一表中具有多行。要返回一行,您必须消除要连接到的表中的其他多行。

最简单的方法是增强where子句或JOIN限制,使其仅联接到您想要的单个记录。通常,这需要确定一条规则,该规则将始终从另一个表中选择“正确”条目。

让我们假设您有一个简单的问题,例如:

Person:  JanePets: Cat, Dog

如果在此处创建简单的联接,您将收到两条Jane记录:

Jane|CatJane|Dog

如果您的观点是要列出人和宠物的所有组合,那么这是完全正确的。但是,如果相反,您的视图应该列出有宠物的人,或者列出人并显示其中的一只宠物,那么您遇到的问题就是现在。为此,您需要一个规则。

SELECt Person.Name, Pets.NameFROM Person  LEFT JOIN Pets pets1 ON pets1.PersonID = Person.IDWHERe 0 = (SELECt COUNT(pets2.ID)   FROM Pets pets2  WHERe pets2.PersonID = pets1.PersonID     AND pets2.ID < pets1.ID);

这是将规则限制为将联接中的Pets记录限制为ID最低(在Pets表中第一个)的Pet。WHERe子句从本质上说:“在没有宠物属于同一个人且ID值较低的情况下”。

这将产生一个记录结果:

Jane|Cat

您需要应用于视图的规则将取决于您所拥有的列中的数据,以及应在该列中显示哪些“多个”记录。但是,这最终会隐藏一些数据,这可能不是您想要的。例如,以上规则掩盖了简有一只狗的事实。当这不正确时,它看起来好像简只有猫。

如果您开始过滤掉有效数据,则可能需要重新考虑视图的内容以及视图要完成的工作。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/398504.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号