1

我有一个这样的样本表。

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

4 回答 4

3

一种方法是使用EXISTS().

SELECT  *
FROM    tablename a
WHERE   EXISTS
        (
            SELECT  1
            FROM    tableName b
            WHERE   a.Name = b.name
            GROUP   BY Name
            HAVING  COUNT(*) > 1
        )
于 2013-10-22T01:08:57.873 回答
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 而不是名称。这是演示

于 2013-10-22T01:09:19.813 回答
0

试试这个

SELECT ID, Name
FROM table1
WHERE Name IN
 (SELECT Name
  FROM table1
  GROUP BY Name
  HAVING COUNT(ID) > 1
 )
ORDER BY ID
于 2013-10-22T01:15:42.227 回答
-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;
于 2013-10-22T01:14:46.383 回答