显示 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 中包含相同值的所有行的主要内容,如果未能解决你的问题,请参考以下文章

PHP计算在许多列中包含相同值的MYSQL行

从不同的相关记录组中选择两列之一中包含重复值的所有行

仅显示特定行中包含特定值的行

PHP计算一列中包含相同值的MYSQL行

保留数据框中的行,对于某些列的值的所有组合,在另一列中包含相同的元素

如何使用 MYSQL 在最终表中包含所有列的默认值为 0 的缺失行?