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

查询一个表中的两个字段值相同的数据 比如数据库LinkUser表里面的Lname字段和UserName字段有相同数据,SQL语句该怎么写呢????
数据库的字段,比如字段Lname的数据有重复的,并且UerName字段里面的数据也重复,那么就显示出来:自己写出来的,前面问题说的不详细,-_-。sorry!
select p1.Lname,p1.UserName from LinkUser p1,LinkUser p2 where p1.Lname=p2.Lname and p1.UserName=p2.UserName and p1.id!=p2.id

select LinkUser.* from LinkUser INNER JOIN (SELECT Lname,UserName from LinkUser group by Lname,UserName having count (*)>1) AS B ON LinkUser.Lname =B.Lname AND LinkUser.UserName=B.UserName ORDER BY LinkUser.UserName
SELECT Lname,UserName from LinkUser group by Lname,UserName having count (*)>1 --先找到表中两个字段(Lname,UserName)都一样的值,虚拟成B表,
通过内链接(INNER JOIN)把LinkUser表中两个字段(LinkUser.Lname)都一样的值的数据都查询出来,并按UserName的顺序排列(ORDER BY LinkUser.UserName)。

注意:Lname,UserName两个字段中有NULL时,内链接(INNER JOIN)中inkUser.Lname =B.Lname AND LinkUser.UserName=B.UserName 不成立,因为两空值是不等的。但在SELECT Lname,UserName from LinkUser group by Lname,UserName having count (*)>1的语句中的结果NULL值认定为重复。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-06
--你分组一下就可以得到重复的数据了
SELECT Lname,UserName,count(id) as '在表中重复出现的次数'
where LinkUser
GROUP BY Lname,UserName
HAVING count(id)>1

/*
SELECT *
FROM LinkUser
WHERE ISNULL(Lname,'')=ISNULL(UserName,'') */本回答被网友采纳
第2个回答  2012-03-07
按照
Lname
UerName
这2个字段分组,查出来组内条数count(*) 大于1的就是了
第3个回答  推荐于2017-06-13
/*难道是下面的这种?
select *
from LinkUser
where Lname=UserName; */
意思是去除重复的?
select * from LinkUser a
where exists (select 1 from (select min(id),Lname from LinkUser group by Lname) b
where a.id=b.id)追问

你这个B是哪里来的,我这个没看太明白,能更详细点吗

追答

b的意思就是把下面的这段sql取出的数据抽象为一个表,并为这个集合起一个别名为b
(select min(id),Lname from LinkUser group by Lname)

本回答被网友采纳
第4个回答  2017-06-13
select Lname,count(id) from LinkUser group by Lname having count(id)>1
select UserName,count(id) from LinkUser group by UserName having count(id)>1
相似回答