MySQL为2个或更多ID选择重复名称

MySQL为2个或更多ID选择重复名称,mysql,sql,Mysql,Sql,我有以下表格: | id | name | |-------|--------| | 00001 | Item A | | 00001 | Item A | | 00002 | Item B | | 00003 | Item C | | 00004 | Item C | 如果我想检查两个或更多不同ID是否有相同的名称,我应该使用什么MySQL查询?我曾尝试在查询中使用LEFT JOIN和UNION,但无法实现。因此,在这种情况下,查询应返回: | id | name | |

我有以下表格:

| id    | name   |
|-------|--------|
| 00001 | Item A |
| 00001 | Item A |
| 00002 | Item B |
| 00003 | Item C |
| 00004 | Item C |
如果我想检查两个或更多不同ID是否有相同的名称,我应该使用什么MySQL查询?我曾尝试在查询中使用
LEFT JOIN
UNION
,但无法实现。因此,在这种情况下,查询应返回:

| id    | name   |
|-------|--------|
| 00003 | Item C |
| 00004 | Item C |

提前感谢。

将表本身
加入到
相同的
名称
和不同的
id

查询

select t1.id,t1.name
from tbl1 t1
join tbl1 t2
on t1.id <> t2.id
and t1.name = t2.name;
选择t1.id,t1.name
从tbl1到t1
加入tbl1 t2
关于t1.id t2.id
t1.name=t2.name;

你试过这样的东西吗

SELECT *
FROM table_name
GROUP BY name
HAVING count(DISTINCT id) > 1
试试这个

SELECT name, COUNT(id) as cnt
FROM table
GROUP BY name
HAVING cnt > 1

如果要返回原始行,则需要
将某些内容连接回原始数据:

select t.*
from t join
     (select name, count(distinct id) as cnt
      from t
      group by name
     ) tt
     on t.name = tt.name
where cnt >= 2;
如果只需要名称,那么子查询就足够了(使用
having
子句)。

试试这个

select id, name from customers where name in
(select name from customers group by name having count(*) > 1)

A项呢?这也是重复的?不,不是因为id相同@Amdixon这不也会将“项目A”中的ID计算为2吗?
select id, name from customers where name in
(select name from customers group by name having count(*) > 1)