显示 MySQL 中包含相同值的所有行
Posted
技术标签:
【中文标题】显示 MySQL 中包含相同值的所有行【英文标题】:Show all rows in MySQL that contain the same value 【发布时间】:2011-04-17 09:39:43 【问题描述】:我有一个 mysql 数据库:
ID | Name
1 | Bob
2 | James
3 | Jack
4 | Bob
5 | James
如何返回同名出现多次的所有列的列表,例如,我想返回:
1 | Bob
2 | James
4 | Bob
5 | James
我写了一个计数查询:
SELECT Name, COUNT(Name)
AS NumOccurrences
FROM table
GROUP BY Name
HAVING ( COUNT(Name) > 1 )
但这只会返回如下内容:
Bob | 2
James | 2
而我想返回返回的完整行。
任何帮助将不胜感激,谢谢。
【问题讨论】:
【参考方案1】:你可以通过子选择来做到这一点
SELECT * FROM table WHERE Name IN (
SELECT Name FROM table GROUP BY Name HAVING count(*) > 1
)
此外,如果您的区分匹配是多列,您可以使用笛卡尔集:
SELECT * FROM table WHERE (firstName, lastName) IN (
SELECT firstName, lastName FROM table GROUP BY firstName, lastName HAVING count(*) > 1
)
【讨论】:
很棒的解决方案!也为我工作。非常感谢。 这对于一个大表和很多列来说太慢了,对不起【参考方案2】:试试这个 sql 查询:
select distinct a.name, a.id
from table a, table b
where a.name = b.name and a.id != b.id
【讨论】:
我认为这应该是选择的答案 当您查看同一张表时如何应用此功能? 你是最棒的。【参考方案3】:试试这个
SELECT Name, COUNT(Name) AS NumOccurrences
FROM table
GROUP BY Name
HAVING COUNT(*) > 0
【讨论】:
以上是关于显示 MySQL 中包含相同值的所有行的主要内容,如果未能解决你的问题,请参考以下文章