如何在MySQL数据库中查找带有查询的重复项

时间:2016-08-18 17:34:15

标签: mysql

我需要在我的MySQL桌面上找到具有相同名称但具有不同运动的重复值。 以下是数据示例:

John Smith    Athletics
Edward Green  Athletics
Edward Green  Fencing
Jim Brown     Rugby
Jim Brown     Rowing
Jim Brown     Sailing
Stan Smith    Football
Stan Smith    Football

好吧,我想提一个给我这个结果的查询:

Edward Green  Athletics
Edward Green  Fencing
Jim Brown     Rugby
Jim Brown     Rowing
Jim Brown     Sailing

正如我所说,只有那些具有相同名称但不同运动的价值,才能找到同名。

3 个答案:

答案 0 :(得分:2)

以下是使用exists的一个选项:

select *
from yourtable t
where exists (
    select 1
    from yourtable t2
    where t.name = t2.name and t.sport != t2.sport
    )

答案 1 :(得分:0)

内部选择会使所有name具有多个不同的sport。要获得这些名称的运动,你必须加入同一张桌子

select t1.*
from your_table t1
join
(
    select name
    from your_table
    group by name
    having count(distinct sport) > 1
) t2 on t1.name = t2.name

答案 2 :(得分:-1)

没有suquery的另一个可能性是使用带有COUNT的可能性:

SELECT * 
FROM yourtable t
GROUP BY name
HAVING ( COUNT(name) > 1 )