如何在字段行之间返回具有不同值的ID

时间:2019-04-23 15:31:25

标签: postgresql

我想返回段之间具有不同值的ID:

| id    | segment     | quantity |
|-------|-------------|----------|
| 12345 | Control - A | 1        |
| 12345 | Control - B | 1        |
| 98765 | Control - A | 0        |
| 98765 | Control - B | 1        |

输出:

| id    |
|-------|
| 98765 |

我曾经尝试过CASE逻辑,分区等,但是想知道最佳方法。

2 个答案:

答案 0 :(得分:2)

在这种情况下,我发现使用EXISTS子句是最容易阅读的,但是使用自联接的其他答案也应该可以正常工作。

select distinct id 
from t1 where exists 
  (select 1 
   from t1 t1_alias 
   WHERE t1.id = t1_alias.id and 
   t1.segment != t1_alias.segment and 
   t1.quantity != t1_alias.quantity)
;

答案 1 :(得分:1)

可能不是最佳方法,但您没有提到它,我会尝试这样的事情:

select
    distinct t1.id
from
    table t1 inner join 
    table t2 on t1.id = t2.id and t1.quantity != t2.quantity and t1.segment != t2.segment