【问题标题】:select only tuples where second column always has same value仅选择第二列始终具有相同值的元组
【发布时间】:2017-05-18 05:38:43
【问题描述】:

我有一张和这张类似的桌子

ID | CountryID
1 | 22
1 | 22
2 | 19
3 | 0
3 | 14
3 | 18
3 | 21
3 | 22
3 | 23
4 | 19
5 | 9
5 | 9
6 | 14

我想按第一个 ID 列分组,但只选择行,其中 CountryID 在整个 ID 中具有相同的值。结果表应如下所示

ID | CountryID
1 | 22
2 | 19
4 | 19
5 | 9
6 | 14

有什么想法吗?

【问题讨论】:

    标签: sql database db2


    【解决方案1】:

    我认为以下查询应该有效:

    SELECT ID, MAX(CountryID)
    FROM Table1
    GROUP BY ID
    HAVING MIN(CountryID) = MAX(CountryID)
    

    【讨论】:

    • 如果重复的值不是最小/最大(7,13),(7,12),(7,11),(7,12),这将失败。如果我理解正确,这也应该选择 (7,12)。
    • 是的,虽然我们用(4,22)插入行
    • @CoderofCode OP 说where the CountryID has the same value throughout an ID,我认为这与您的示例相矛盾。
    【解决方案2】:
    SELECT ID, count(distinct CountryID)
    FROM Table1
    GROUP BY ID
    HAVING count(distinct CountryID)=1
    

    【讨论】:

    • 您的查询在第二列返回一个计数,而不是 OP 要求的 CountryID。
    猜你喜欢
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    • 2019-10-19
    • 2017-09-22
    相关资源
    最近更新 更多