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)