日期:2014-05-19  浏览次数:20614 次

如何查询相同的记录?
表格如下:
id   num1   num2   num3
1       1         3           2
2       2         2           1
3       2         1           1
4       1         1           2
5       2         2           2
6       3         3           1
7       2         2           1
..     ..       ..         ..

想查询相同num1/num2/num3的记录:
如   id   2和id   7


------解决方案--------------------
select * from 表 t where exists(select 1 from 表 where id <> t.id and num1=t.num1 and num2=t.num2 and num3=t.num3)
------解决方案--------------------
SELECT DISTINCT A.* FROM TABLE A INNER JOIN TABLE B ON A.ID <> B.ID AND A.num1=B.num1 AND A.num2=B.num2 AND A.num3=B.num3
或者
SELECT DISTINCT A.* FROM TABLE A INNER JOIN TABLE B ON A.ID <> B.ID
CAST(ISNULL(A.num1,0) AS VARCHAR(50))+CAST(ISNULL(A.num2,0) AS VARCHAR(50))+CAST(ISNULL(A.num3,0) AS VARCHAR(50))=CAST(ISNULL(B.num1,0) AS VARCHAR(50))+CAST(ISNULL(B.num2,0) AS VARCHAR(50))+CAST(ISNULL(B.num3,0) AS VARCHAR(50))
------解决方案--------------------
SELECT *
FROM Table1
WHERE convert(varchar(10),num1)+ ', '+convert(varchar(10),num2)+ ', '+convert(varchar(10),num3)
IN (SELECT convert(varchar(10),num1)+ ', '+convert(varchar(10),num2)+ ', '+convert(varchar(10),num3) FROM Table1 GROUP BY num1,num2,num3 having count(*)> 1)
------解决方案--------------------

select * from T as tmp
where (select count(*) from T where num1=tmp.num1 and num2=tmp.num2 and num3=tmp.num3)> 1