SQL Query按列分组,其他列不同

时间:2017-09-28 10:02:08

标签: sql sql-server

表格中的示例数据用户:

ThisId  ThatId
1       5
1       5
1       6
2       7
3       8
3       8
4       9

首先我得到重复ThisId的记录,所以:

SELECT
    ThisId
FROM
    Users
GROUP BY
    ThisId
HAVING 
    COUNT(*) > 1

这有效并返回

ThisId
1
3

但是我只想要ThatId不同的记录。所以我的输出应该只是:

ThisId
1

因为具有ThisId 1的记录具有不同的ThatIds(5,6)。 ThisId 3的记录都有Thatid 8。

我几乎被困在这里,不知道如何实现这一点。

我希望你理解, 提前谢谢

3 个答案:

答案 0 :(得分:4)

以下查询应该有效

SELECT
    ThisId
FROM
    Users
GROUP BY
    ThisId
HAVING 
    COUNT(distinct ThatId) > 1

答案 1 :(得分:1)

这是答案。

SELECT
    ThisId
FROM
    Users
GROUP BY
    ThisId
HAVING 
    MAX(ThatId) <> MIN (ThatId)

结果:

ThisId
-----------
1

答案 2 :(得分:0)

真的很简单,但这会有用吗?

SELECT
    ThisId
FROM
    Users
GROUP BY
    ThisId
HAVING 
    COUNT(*) > 1
    AND COUNT(DISTINCT ThatId) > 1