Как использовать запрос WHERE в том же столбце в той же таблице? - PullRequest
0 голосов
/ 31 января 2020

У меня есть эти данные.

tbl_data

id    value
1       A
1       B
1       C
2       A
2       C

Я хочу выбрать идентификатор, для которого в качестве значения выбраны 'A' и 'B'.

SELECT id FROM tbl_data WHERE value = 'A' AND value = 'B'

Но он возвращает нулевой результат.

Как заставить его вернуть id 1?

Ответы [ 3 ]

4 голосов
/ 31 января 2020
select id from table 
where
value  in ('A', 'B')
group by id 
having count( distinct value ) = 2
1 голос
/ 31 января 2020

Альтернативой решению @OTAR является использование CTE

CREATE TEMPORARY TABLE t ( ID INT, value TEXT);
INSERT INTO t VALUES 
(1,'A'),(1,'B'),(1,'C'),(2,'A'),(2,'C'),(2,'F');


WITH j AS (
  SELECT id,array_agg(value) AS arr
FROM t GROUP BY id)
SELECT * FROM j
WHERE arr @> ARRAY['A','B'];

 id |   arr   
----+---------
  1 | {A,B,C}
(1 Zeile)
0 голосов
/ 31 января 2020

Вы можете просто выполнить следующее:

SELECT min(id) FROM table WHERE value in ('A','B');
...