如何在同一 table 的同一列中使用 WHERE 查询?
How to use WHERE query at same column in same table?
我有这个数据。
tbl_data
id value
1 A
1 B
1 C
2 A
2 C
我想要 select id,其中 'A' 和 'B' 作为值。
SELECT id FROM tbl_data WHERE value = 'A' AND value = 'B'
但它 return 结果为零。
如何进入 return id 1?
select id from table
where
value in ('A', 'B')
group by id
having count( distinct value ) = 2
@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)
您可以简单地执行以下操作:
SELECT min(id) FROM table WHERE value in ('A','B');
我有这个数据。
tbl_data
id value
1 A
1 B
1 C
2 A
2 C
我想要 select id,其中 'A' 和 'B' 作为值。
SELECT id FROM tbl_data WHERE value = 'A' AND value = 'B'
但它 return 结果为零。
如何进入 return id 1?
select id from table
where
value in ('A', 'B')
group by id
having count( distinct value ) = 2
@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)
您可以简单地执行以下操作:
SELECT min(id) FROM table WHERE value in ('A','B');