解决查询一个表中的两个字段值相同的数据的方法。
例子:
比如有下面的表: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个。。。字段相同的,可以通过上面的方法查询出来,并对没用的数据进行删除。