查询一个表中的两个字段值相同的数据

时间:2022-04-13 15:09:11

解决查询一个表中的两个字段值相同的数据的方法。

 

例子:

 

比如有下面的表:person

 

查询一个表中的两个字段值相同的数据

看到id=1和id=5,id=2和id=6的两行数据中的,name,city值相同,那么怎样把它查询出来呢?

 

先看下面的一条SQL:

 

select p1.name,p1.city from person p1,person p2 where p1.name=p2.name and p1.city=p2.city;

 

这条语句的意思是利用自身,单个表之间的链接查询。但结果却是如下:

查询一个表中的两个字段值相同的数据

这个可看出,不是我们要的结果,错误原因是,一个表中相同的一个数据行进行比较,还是满足条件。故输出了。

 

 

所以,可以用下面的来解决:

 

select p1.name,p1.city from person p1,person p2 where p1.name=p2.name and p1.city=p2.city and p1.id!=p2.id;

 

下面来看看结果:

 

查询一个表中的两个字段值相同的数据

 

满足了我们的要求。这样的方法可以扩展到1个字段,2个字段,3个字段,甚至更多。

 

一些软件系统是不允许有2个,3个。。。字段相同的,可以通过上面的方法查询出来,并对没用的数据进行删除。