如何从表格中选择4列中的3列具有相同的值?

时间:2016-09-21 15:25:13

标签: php mysql

我正在尝试找到潜在的重复记录。例如。 哪里

  • FirstName = FirstName
  • LastName = LastName
  • DOB = DOB
  • 街道地址=街道地址

所以FirstName,LastName和DOB都是一样的。或FirstName,LastName和StreetAddress。或LastName,DOB和SteetAddress。等等......

我的客户想要记录4个值中的3个相同的记录。 可以在MySql中完成吗?或者我需要在PHP中进行一些处理吗?

3 个答案:

答案 0 :(得分:1)

只需使用SELECT DISTINCT:

SELECT DISTINCT first, last, dob, street
FROM Your_Table

答案 1 :(得分:0)

客户(id,firstname,dob)

检索具有相同名字的客户ID:

select a.id
from customer a, customer b
where (a.firstname=b.firstname and a.lastname=b.lastname and a.dob=b.dob) or 
        (a.firstname=b.firstname and a.lastname=b.lastname and a.address=b.address) or
        (a.firstname=b.firstname and a.dob=b.dob and a.address=b.address) or
        (a.lastname=b.lastname and a.dob=b.dob and a.address=b.address);

否则你必须自己加入桌子:

Database = DATABASE
Tables inside = Table1, Table2, Table3

答案 2 :(得分:0)

首先添加一个索引:

alter table whatever add key(DOB,LastName,FirstName,StreetAddress);

然后查看是否有三个字段中的重复行 - 在本例中为DOB,FN和LN:

select DOB,LastName,FirstName,StreetAddress from whatever t1 
inner join (
 select DOB,LastName,FirstName,StreetAddress from whatever 
group by DOB,LastName,FirstName,StreetAddress ) as t2 
on t1.DOB=t2.DOB 
and t1.LastName=t2.LastName
and t1.FirstName=t2.FirstName
where t1.StreetAddress != t2.StreetAddress;

查找其他组合,更改您加入的字段以及where子句中的字段。