Mysql 查询结果的子集,子查询语法?

Mysql 查询结果的子集,子查询语法?,mysql,subquery,Mysql,Subquery,我正在寻找一个我似乎无法克服错误的查询帮助 我有两个表,一个是实例表,另一个是操作组表。每个操作组都包含实例,因此我有: Groups.(ID, Verified (Y/N)) Instances.(ID, source (A/B/C/D), status (X/Y/Z, groupid) 我需要做的第一件事是只分离包含source=A实例的组,然后我需要计算source!=A和状态=Z 问题是,我无法在不产生错误的情况下找出子查询的位置。我试着把它作为一个别名,并从中插入子表,但这似乎不起作

我正在寻找一个我似乎无法克服错误的查询帮助

我有两个表,一个是实例表,另一个是操作组表。每个操作组都包含实例,因此我有:

Groups.(ID, Verified (Y/N))
Instances.(ID, source (A/B/C/D), status (X/Y/Z, groupid)
我需要做的第一件事是只分离包含
source=A
实例的组,然后我需要计算
source!=A
状态=Z

问题是,我无法在不产生错误的情况下找出子查询的位置。我试着把它作为一个别名,并从中插入子表,但这似乎不起作用

下面是我提出的一个基本问题,它不起作用:

SELECT COUNT(Instances.id)
FROM (
    SELECT Instances.id
    JOIN Groups ON Instances.groupid=Groups.id
    WHERE Groups.Verified='Y' AND Instances.source='A') AS a
WHERE Groups.Verified='Y' AND Instances.source!='A' AND Instances.status='Z';

如有任何建议,将不胜感激,谢谢!我对SQL非常陌生,没有接受过正式培训,但我现在的环境需要定期使用SQL。

此查询提供至少有一个实例为
source='A'
的所有组的ID:

SELECT DISTINCT(groupid) FROM Instances WHERE source = 'A'
在此基础上,您需要再次查询
实例
,只考虑属于上述具有

WHERE groupid IN (SELECT DISTINCT(groupid) FROM Instances WHERE source = 'A')
      AND source != 'A' AND status = 'Z'
您还需要
groupbygroupid
,以便此查询将分别为每个组提供匹配实例的计数。所以最后的查询变成

SELECT groupid, COUNT(*) AS instance_count FROM Instances
WHERE groupid IN (SELECT DISTINCT(groupid) FROM Instances WHERE source = 'A')
      AND source != 'A' AND status = 'Z'
GROUP BY groupid

现在运行查询,似乎运行了很长时间,但数据库很大,会让您知道结果如何,谢谢!sytax看起来不错,但10分钟后我没有得到结果,所以这是团队将为我查看的数据库端的内容,谢谢您的帮助!