所以,我试图选择MySQL加入完全不活跃的客户。我有以下声明,选择具有有效服务订单的所有客户。
SELECT DISTINCT u.* FROM users u INNER JOIN orders o ON o.assigned=u.id AND o.status!=0
这很好用。但现在我正在尝试选择以前订购但订单被停用的客户(o.status等于值0)。我有以下声明(已结束),但它仍然是返回仍然有活动订单的客户,但有另一个订单已停用。
SELECT DISTINCT u.* FROM users u INNER JOIN orders o ON o.assigned=u.id AND o.status!=1
因此,在非专业术语中,基本上客户可以拥有多个服务订单。每项服务彼此独立,我想选择完全停用的客户。例如:
Susan有2个服务订单,1个已激活,另一个已停用。现在,Susan正在被停用且不正确的用户列表中。仅限订单已完全停用的客户。
谢谢!
答案 0 :(得分:0)
SELECT u.*
FROM users u
LEFT
JOIN orders o
ON o.assigned=u.id
AND o.status!=0
WHERE o.assigned IS NULL;
或类似的东西
答案 1 :(得分:0)
为了解释这种情况,您需要执行包含相反SELECT语句的WHERE子句。
例如:
select distinct u.* from users u inner join orders o
on o.assigned=u.id and o.status!=1
where u.id != (select distinct s.id from users s inner join orders r
on r.assigned = s.id and r.status!=0 where s.id == u.id)