我有兩個表。表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