我有两个表。表A
有一个id
列。表B
有一个Aid
列和一个type
列。示例数据:sql组合了两个子查询
A: id
--
1
2
B: Aid | type
----+-----
1 | 1
1 | 1
1 | 3
1 | 1
1 | 4
1 | 5
1 | 4
2 | 2
2 | 4
2 | 3
我想从表A中获取所有ID,其中有一定数量的类型1和类型3操作。我的查询是这样的:
SELECT id
FROM A
WHERE (SELECT COUNT(type)
FROM B
WHERE B.Aid = A.id
AND B.type = 1) = 3
AND (SELECT COUNT(type)
FROM B
WHERE B.Aid = A.id
AND B.type = 3) = 1
等上面的数据,仅仅是ID 1
应返回。
我可以组合2个子查询吗?目标是使查询运行得更快。
是,Postgres的支持WITH子句,因为V8.4,包括递归:http://www.postgresql.org/docs/current/static/sql- select.html – 2010-06-11 21:27:46