标题有点不对,我可以在这里解释得更好。 假设我有一个像这样的MySQL表:
的MySQL>选择*来自人;
+------+---------------+
| name | number |
+------+---------------+
| John | 100000 |
| Alex | 200000 |
| Tim | 500000 |
| Alice| 100000 |
| Peter| 500000 |
+------+---------------+
现在我想要一个查询,它返回具有相同编号的人的姓名,即,对于这个表,我会查询返回John和Alice(他们有相同的数字,100000)和Tim和Peter (相同数字500000)
答案 0 :(得分:2)
尝试自我加入,如下所示:
SELECT p1.name
FROM people p1 INNER JOIN people p2
ON p1.number = p2.number
WHERE p1.name != p2.name
答案 1 :(得分:1)
您可以通过汇总数字列并使用group_concat()
来完成此操作。 having
子句仅选择具有多个名称的情况:
select number, group_concat(name) as names
from table t
group by number
having count(*) > 1;