交叉引用两个SQL结果,发现重叠?

时间:2015-09-29 15:33:05

标签: php sql pdo

我有一张客户订单表:里面是零成本订单(我给客户的东西)以及付费订单。我想知道收到免费订单的客户是否也购买了订单。

#endif

这两个查询向我提供了收到免费订单的客户列表以及支付订单的客户列表。我想计算重叠的实例,例如:

    SELECT customer_id
        FROM orders
        WHERE total = 0
        GROUP BY customer_id

    SELECT customer_id
        FROM orders
        WHERE total != 0
        GROUP BY customer_id

这两组之间的交叉是//free orders 1,5,2,9,3,11,7 //paid orders 1,5,4,8,7,9,3,12,10,13 ,它是五个元素。我需要一种方法来严格使用SQL首选。

2 个答案:

答案 0 :(得分:2)

只需使用having子句即可。这可能是最简单的方法,假设total没有负值:

SELECT customer_id
FROM orders
GROUP BY customer_id
HAVING MIN(total) = 0 AND MAX(total) > 0;

答案 1 :(得分:0)

试试这个(未经测试,抱歉)

SELECT count(distinct customer_id)
    FROM orders a JOIN orders b
    ON a.customer_id = b.customer_id
    WHERE a.total = 0 and b.total <>0