我有一个这样的样本表。
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?
答案 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;