获取MySql中重复行的列表

use*_*033 6 mysql sql

我有一张这样的桌子

ID     nachname     vorname
1       john         doe
2       john         doe
3       jim          doe
4       Michael     Knight
Run Code Online (Sandbox Code Playgroud)

我需要一个查询,它将返回具有相同nachname和vorname的记录中的所有字段(select*)(在本例中为记录1和2).谁能帮我这个?谢谢

wim*_*vds 14

以下查询将给出重复列表:

SELECT n1.* FROM table n1
inner join table n2 on n2.vorname=n1.vorname and n2.nachname=n1.nachname
where n1.id <> n2.id
Run Code Online (Sandbox Code Playgroud)

BTW您发布的数据似乎有误"Doe"和"Knight"是姓,而不是名字:p.

  • 我只需要添加select distinct(查询返回同一行的2倍).谢谢您的帮助 (2认同)

ewe*_*nli 11

您的问题的一般解决方案是查询表单

SELECT col1, col2, count(*)
FROM t1
GROUP BY col1, col2
HAVING count(*) > 1
Run Code Online (Sandbox Code Playgroud)

这将为表中的每组重复行返回一行.此结果中的最后一列是特定值的重复数.


如果您真的想要ID,请尝试以下方法:

SELECT id FROM 
t1, 
( SELECT col1, col2, count(*)
  FROM t1
  GROUP BY col1, col2
  HAVING count(*) > 1 ) as t2
WHERE t1.col1 = t2.col1 AND t1.col2 = t2.col2 
Run Code Online (Sandbox Code Playgroud)

虽然没有测试过