SQL查询以获取具有重复值但不属于同一组的所有行

标签 sql count grouping distinct

数据库模式组织如下:

ID | GroupID | VALUE
--------------------
 1 |    1    |   A
 2 |    1    |   A 
 3 |    2    |   B
 4 |    3    |   B

在此示例中,我想获取所有具有重复值但不属于同一组的行。所以期望的结果集应该是 IDs (3, 4),因为它们不在同一组 (2, 3) 但仍然具有相同的 VALUE (B)。

我在编写 SQL 查询时遇到问题,希望得到任何指导。谢谢。

到目前为止,我正在使用 SQL Count,但不知道如何处理 GroupId。

SELECT * 
FROM TABLE T
HAVING COUNT(T.VALUE) > 1
GROUP BY ID, GroupId, VALUE

最佳答案

最简单的方法是使用 EXISTS:

SELECT 
    ID 
FROM
    MyTable T1
WHERE
    EXISTS (SELECT 1
            FROM MyTable 
            WHERE Value = t1.Value
            AND GroupID <> t1.GroupID)

关于SQL查询以获取具有重复值但不属于同一组的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11416335/

相关文章:

mysql - 如何使用自增列(字段)向MySQL插入数据?

php - MySQL 计算最常见的值

MySQL 根据复杂连接的计数更新列

mysql - 如何在MySQL数据库中按域分组并删除两个以上结果

mysql - 基于 SQL Server 的有限时间段内的小组系列

c# - 使用 Linq 合并来自两个来源的数据的更好方法

c# - Datagridview 多查询字符串问题

Mysql "select * from"没有返回所有行

php - 根据两列值和每组中一列的总和对多维数组数据进行分组

python - 从一个可迭代对象中一次产生多个对象?