2013-03-20 106 views
1

人匹配的SELECT QUERY会生成一个表,其中每个第2行包含与其上一行相同的信息。 在Sort By Surname,GivenName,BirthD 例如如何删除数据不在列中的重复数据行

IDIR1, Surname, GivenName, BirthD IDIR2. 
IDIR2, Surname, GivenName, BirthD IDIR1. 

(两个人有相同的标准,但diff的IDIR

有什么选择有消除第二线的appearence。 删除是可以接受的,但NOT IN, <>,等不起作用,因为: 所有IDIRs (1 & 2)都在2 IDIR列中。 只有一行被读取,以检查两者是否为个人&不是同一人。

+0

你正在使用什么[RDBMS](http://en.wikipedia.org/wiki/Relational_database_management_system)? 'RDBMS'代表*关系数据库管理系统*。 'RDBMS是SQL'的基础,并且适用于所有现代数据库系统,如MS SQL Server,IBM DB2,Oracle,MySQL等... – 2013-03-20 05:11:06

回答

0

沿着这些线条的东西应该给你一个结果集,其中每个第二条记录已被排除。

SELECT a.* 
    FROM thetable AS a 
    JOIN thetable AS b 
    ON a.Surname = b.Surname 
    AND a.GivenName = b.GivenName 
    ... 
WHERE a.IDIR < b.IDIR 

请注意,这是未经测试 - 你可能需要清理一点点,但诀窍是使用a.IDIR < b.IDIR淘汰的重复。

+0

感谢堆@mzedeler - 它的工作魅力。只需将最后一行添加到我的SELECT查询中,作为与其他7个过滤器的AND。数据库是使用LTools作为查询编辑器的旧版族谱中的访问。 – JohnP4216 2013-04-18 22:45:16