选择多行,每列有条件

时间:2019-01-30 01:14:10

标签: postgresql select

我确信这可能是一个非常愚蠢的问题,但是我无法从互联网上找到答案。

我正在尝试选择具有此条件的行。

如果Side既有“ Right”又有“ Left”,则选择所有行。

enter image description here

在这种情况下,它将同时选择ID 3和4(黄色高亮显示的那一行)。

我知道底部查询将无法正常工作。

从“表格”中选择*,其中(“边” =“右”)或(“边” =“左”)

我该怎么做?

2 个答案:

答案 0 :(得分:2)

您需要加入。如果您的表名是进程

select 
 p.*
from processes p

inner join processes p2
on p.pid = p2.pid 
and p.id <> p2.id
and p.side <> p2.side 

答案 1 :(得分:0)

您可以使用WHERE中的HAVINGGROUP BY子句对其进行过滤

SELECT *
  FROM t
    WHERE pid IN (
       SELECT pid
           FROM t
          WHERE side IN (
           'Right',
           'Left' )
     GROUP BY pid
     HAVING COUNT(DISTINCT side) = 2 )

Demo