我需要在我的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
正如我所说,只有那些具有相同名称但不同运动的价值,才能找到同名。
答案 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 )