0
假設我們有一個標準並且屬於產品和類別之間的許多關聯 product_categories表由product_id和category_id對組成。PSQL:選擇具有所有給定關聯對象列表的所有資產ID
我們有category_id的列表,需要選擇屬於所有這些類別的所有產品。
是來到我的腦海裏,最好的方法是有多個EXISTS()在以編程語言水平由和聯體子句:
SELECT * FROM products p WHERE
EXISTS(SELECT * FROM product_categories pc
WHERE pc.product_id = p.id AND pc.category_id = {first_id}) AND
EXISTS(SELECT * FROM product_categories pc
WHERE pc.product_id = p.id AND pc.category_id = {second_id}) AND ...
EXISTS是快的Postgres 8.4等等這種方法沒有性能問題。
但是我更喜歡做這種類型的查詢嗎?
因爲它會查找至少有一個給定的category_id但不是全部的產品。 – 2010-08-11 10:44:37
@Bogdan,錯過了。好的,你可以嘗試INTERSECT這種情況下 – 2010-08-11 11:43:23
它應該如何與INTERSECT? – 2010-08-11 11:57:30