我有两张数据库表一张costumer包含用户ID和订单ID这两个字段是一对多的关系。一张order包含订单ID和支付方式。用SQL查询有多少用户只使用了支付方式1而没有使用支付方式2
可以使用子查询和NOT IN操作符来实现:
SELECT COUNT(DISTINCT customer.ID)
FROM customer
WHERE customer.ID NOT IN (SELECT customer.ID
FROM customer
JOIN orders ON customer.orderID = orders.orderID
WHERE orders.paymentMethod = "2")
AND customer.ID IN (SELECT customer.ID
FROM customer
JOIN orders ON customer.orderID = orders.orderID
WHERE orders.paymentMethod = "1");
首先,内部的子查询找出使用支付方式“2”的所有客户。然后,外部的查询找出使用支付方式“1”的客户,但排除掉使用支付方式“2”的客户。最后,通过COUNT和DISTINCT函数计算结果。
原文地址: https://www.cveoy.top/t/topic/bFVi 著作权归作者所有。请勿转载和采集!