Mysql 如何在条件为WHERE的情况下计算表中的行数?

Mysql 如何在条件为WHERE的情况下计算表中的行数?,mysql,sql,Mysql,Sql,有一个查询用于从表问题\类别中计算行数: 需要显示主题专业化的类别名称,条件是a.country=1以连接表a上的问题a.idQuestion=question\u category.question\u categoryIdQuestion 在我的情况下-不显示类别。不清楚。 但我猜。你有一个连接条件,比如 subscrubetousers.SubscrubeToUsersIdNote = idSpecialization AND subscrubetousers.SubscrubeToUse

有一个查询用于从表问题\类别中计算行数:

需要显示主题专业化的类别名称,条件是a.country=1以连接表a上的问题a.idQuestion=question\u category.question\u categoryIdQuestion

在我的情况下-不显示类别。

不清楚。 但我猜。你有一个连接条件,比如

subscrubetousers.SubscrubeToUsersIdNote = idSpecialization AND subscrubetousers.SubscrubeToUsersType = 4 AND SubscrubeToUsersStatus = 1be this 

可能是此条件与特定字段冲突这对于一次提示来说太长了

这是您的查询,修复了一些使用表别名的问题,因此更易于阅读:

SELECT ts.idSpecialization, ts.SpecializationName, sts.SubscrubeToUsersIdNote,
       COUNT(question_categoryId) AS CNT,
       COUNT(idSubscrubeToUsers) AS SUBS
FROM thematicspecialization ts LEFT JOIn
     question_category qc
     ON qc.question_categoryIdCategory = ts.idSpecialization LEFT JOIN
     question q
     ON q.idQuestion = qc.question_categoryIdQuestion LEFT JOIN
     subscrubetousers sts
     ON (sts.SubscrubeToUsersIdNote = ts.idSpecialization AND
         sts.SubscrubeToUsersType = 4 AND
         sts.SubscrubeToUsersStatus = 1)
WHERE q.country = 1
GROUP BY idSpecialization;
我注意到以下几点:

ts和qc之间的连接基于IdCategory和idSpecialization。这似乎是一个奇怪的名字组合。 sts和ts之间的连接部分取决于SubCrubeTousersidNote和idSpecialization。这似乎是一个奇怪的名字组合。 where条件是将一些左连接转换为内部连接,这让人质疑为什么要使用左连接。 这两个count列将返回非常相似的数字,因为它们对连接键“”上的非NULL值进行计数。 你的问题是关于类别及其名称。然而,根据您的查询,完全不清楚这些字段指的是什么。
基于这个问题,我不知道你真正想做什么。您可能应该写另一个问题,用示例数据和期望的输出来表示您正在尝试做什么。这个问题已经有了两个答案。澄清它以便理解可能会使答案无效,这是不礼貌的。

不显示类别是什么意思?如果查询类别计数,则不应显示类别本身;GROUPBY查询返回它们的计数,而不显示单个类别。
SELECT ts.idSpecialization, ts.SpecializationName, sts.SubscrubeToUsersIdNote,
       COUNT(question_categoryId) AS CNT,
       COUNT(idSubscrubeToUsers) AS SUBS
FROM thematicspecialization ts LEFT JOIn
     question_category qc
     ON qc.question_categoryIdCategory = ts.idSpecialization LEFT JOIN
     question q
     ON q.idQuestion = qc.question_categoryIdQuestion LEFT JOIN
     subscrubetousers sts
     ON (sts.SubscrubeToUsersIdNote = ts.idSpecialization AND
         sts.SubscrubeToUsersType = 4 AND
         sts.SubscrubeToUsersStatus = 1)
WHERE q.country = 1
GROUP BY idSpecialization;