您想使用EXISTS 子句。
我在制作中经常有这种需求。您不希望一个列表与另一个列表分开,而是要匹配一组特定的元组。在此示例中,我创建了一个临时表,并手动填充它。您可以从数据库中的其他地方提取特定的 cust_id、order_type_id 组合或将它们传递给存储过程或其他任何东西。
您也可以通过对包含您的过滤器集的表进行 INNER JOIN 来完成相同的操作。
Example Fiddle Here。您指定了 MySQL 和 Postgresql,所以我只是猜到了。任何 RDMS 的原理都是一样的。
CREATE TABLE MyTable
(customer_id int
, order_type_id int
, order_date date);
INSERT INTO MyTable (customer_id,order_type_id,order_date)
VALUES
(1,3,'2020-11-20')
, (1,3,'2020-11-01')
, (1,4,'2020-11-30')
, (1,5,'2020-11-25')
, (1,5,'2020-11-01')
, (1,5,'2020-11-25')
, (2,6,'2020-11-01')
, (2,6,'2020-11-25')
, (2,6,'2020-11-30')
, (2,7,'2020-11-25')
, (2,7,'2020-11-25')
, (2,8,'2020-11-01')
, (2,8,'2020-11-25');
CREATE TEMPORARY TABLE CustOrd (customer_id int,order_type_id int);
INSERT INTO CustOrd (customer_id,order_type_id)
VALUES
(1,3)
,(1,5)
,(2,7)
,(2,8);
SELECT
customer_id,
order_type_id,
order_date
FROM MyTable t
WHERE order_date > '2020-11-15'
AND EXISTS (SELECT null
FROM CustOrd co
WHERE t.customer_id = co.customer_id
AND t.order_type_id = co.order_type_id);