我有两个表:tblProduct,其中包含产品列表,tblConsumer具有使用产品ID的消费者名称。 现在我需要找到已从产品表中消费所有产品的消费者的姓名。使用INTERSECT的SELECT语句
我试图用INTERSECT解决这个问题,但问题是我已经在WHERE子句中提供了每个productid。此语法提供了我想要的结果,但是如何在不需要指定每个productID的情况下编写此查询。
SELECT ConsumerName FROM tblConsumer WHERE ProductID= 1
INTERSECT
SELECT ConsumerName FROM tblConsumer WHERE ProductID =2
INTERSECT
SELECT ConsumerName FROM tblConsumer WHERE ProductID =3
tblProduct
---------------------------------
ProductID | Product Name
---------------------------------
1 | Mango
2 | Orange
3 | Banana
tblConsumer
---------------------------------
ConsumerName | ProductID
---------------------------------
David | 1
David | 3
David | 2
Henry | 3
Henry | 2
请原谅我的无知,但是你的意思是'UNION',因为我不知道'INTERSECT'是一个sql语句。哦,并请指定您正在使用的数据库 –
@AdrianCornish:INTERSECT是一种完美有效的方式来结合查询,PostgreSQL至少支持它:http://www.postgresql.org/docs/current/interactive/queries-union.html –
@AdrianCornish - INTERSECT在许多RDBMS中有效。 –