我知道下面的 SQL 语句是完全错误的,但我希望它给出了一个我想做的例子。我有一个用户表、一个付款(用户付款不是订单付款)表和一个订单表。我想随机选择 10 个已经向我们支付了 6 次或更多付款但还没有下过任何订单的用户。
在支付表中,对于每个用户进行的每次付款,都有多行。在订单表中它是相同的,但它包含已完成和未完成的订单,我正在寻找没有任何已完成订单的用户,因此o.order_status
必须是0
订单表中的所有订单。
我希望这是有道理的,如果您需要更多信息,请告诉我,我会更新帖子。感谢帮助。
SELECT u.*, COUNT(p.id) as payment_count, COUNT(o.id) as order_count
FROM users as u
INNER JOIN payments as p
ON u.id = p.user_id
INNER JOIN orders as o
ON u.id = o.user_id
WHERE o.order_status = 0
AND COUNT(p.id) > 6
AND COUNT(o.id) = 0
ORDER BY RAND()
LIMIT 10