比较SQL中的行

时间:2013-10-22 01:07:02

标签: sql compare

我有一个这样的样本表。

ID           Name
1            Jane  
2            John
3            Kevin
4            George
5            Jane

我想从查询中得到的结果是一个包含两个值的表:

ID           Name
1            Jane
5            Jane

我知道这可以使用2个表的副本完成,然后比较一个表和另一个表的名称,但我无法使其工作。

-

抱歉,没有添加此内容。我想得到所有重复的值。

我可以看到关于重复的所有响应等等,我已经看到了关于使用count(*)查找重复项的stackoverflow上的帖子,但我想知道是否可以通过创建表的两个副本来完成(比如t和tt)然后检查t.name = tt.name?

4 个答案:

答案 0 :(得分:3)

这样做的一种方法是使用EXISTS()

SELECT  *
FROM    tablename a
WHERE   EXISTS
        (
            SELECT  1
            FROM    tableName b
            WHERE   a.Name = b.name
            GROUP   BY Name
            HAVING  COUNT(*) > 1
        )

答案 1 :(得分:3)

我通常建议在代码中使用Joins而不是exist,in or not in

 Select A.ID,B.Name from Tablename A
    inner join Tablename B
    on A.Name = B.Name
     where a.id <> b.id 

我通常不建议这样做,ID通常应该加入而不是名称。 这是DEMO

答案 2 :(得分:0)

试试这个

SELECT ID, Name
FROM table1
WHERE Name IN
 (SELECT Name
  FROM table1
  GROUP BY Name
  HAVING COUNT(ID) > 1
 )
ORDER BY ID

答案 3 :(得分:-1)

SELECT A.*
FROM SAMPLE_TABLE A,
(
SELECT NAME,COUNT(*)
FROM SAMPLE_TABLE
GROUP BY NAME
HAVING COUNT(*) > 1
) B
WHERE A.NAME = B.NAME;