gpt4 book ai didi

sql - 选择所有没有服务的客户

转载 作者:行者123 更新时间:2023-11-29 07:10:16 25 4
gpt4 key购买 nike

我有两个 MySQL 表,tblclientstblservicestblservices 中的每条记录代表我们为客户提供的一项服务,每个客户可以有许多服务。两个表都有一个“状态”字段,在 tblclients 中它是“事件”或“非事件”,在 tblservices 中它是“事件”或“终止”。

我需要编写一个 SQL 语句来输出没有事件服务的事件客户端的列表,这样我就可以编写一个 php 脚本来使客户端处于非事件状态。

我了解如何列出所有服务已终止的客户端,但我不了解如何列出没有事件服务(全部已终止)的客户端。有没有办法使用子查询等在 SQL 中查询它。到目前为止,我有:

SELECT tblclients.id, tblclients.email, tblservices.status 
FROM tblclients JOIN tblservices on tblclients.id = tblservices.userid
WHERE tblclients.status="active" AND tblservices.status="terminated";

最佳答案

尝试使用 WHERE [NOT] EXISTS (为了便于阅读,我修改了您的表名):

SELECT * FROM clients WHERE
clients.status = 'active' AND
NOT EXISTS (SELECT * FROM services WHERE
services.userid = clients.id AND
services.status = 'active'
);

这将为您提供没有任何事件服务的所有事件客户(这些将包括根本没有服务的客户)。

希望这对您有所帮助!

更新:要排除根本没有服务的客户,也只需添加该条件:

SELECT * FROM clients WHERE
clients.status = 'active' AND
EXISTS (SELECT * FROM services WHERE services.userid = clients.id) AND
NOT EXISTS (SELECT * FROM services WHERE
services.userid = clients.id AND
services.status = 'active'
);

关于sql - 选择所有没有服务的客户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5023524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com