首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL Count With语句

MySQL Count With语句
EN

Stack Overflow用户
提问于 2012-06-07 19:00:16
回答 2查看 115关注 0票数 0

有人能帮我讲讲如何计算jq.batchid != 0 and tl.taskqueueid IS NOT NULL吗?

以下是初始数据:

代码语言:javascript
复制
+---------------+-----------+---------+---------------+
|  taskqueueid  |  batchid  |  jobid  |  taskqueueid  |
+---------------+-----------+---------+---------------+
|      19       |     0     |   140   |     (NULL)    |
+---------------+-----------+---------+---------------+
|      21       |    103    |   140   |       21      |
+---------------+-----------+---------+---------------+
|      22       |    104    |   140   |       22      |
+---------------+-----------+---------+---------------+
|      23       |    105    |   140   |     (NULL)    |
+---------------+-----------+---------+---------------+
|      20       |     0     |   140   |     (NULL)    |
+---------------+-----------+---------+---------------+

下面是我的问题:

代码语言:javascript
复制
SELECT COUNT(jq.batchid),COUNT(tl.taskqueueid)
  FROM jobqueue jq
  LEFT JOIN taskslogs tl
    ON jq.taskqueueid=tl.taskqueueid
   AND jq.documentgroupid=0
   AND jq.batchid!=0
   AND tl.statusDefinitionID=1
 WHERE jq.jobid=140;

以上查询结果为:

代码语言:javascript
复制
+--------------------+-----------------------+
| COUNT(jq.batchid)  | COUNT(tl.taskqueueid) |
+--------------------+-----------------------+
|         5          |           2           |
+--------------------+-----------------------+

我想要的结果是:

代码语言:javascript
复制
+--------------------+-----------------------+
| COUNT(jq.batchid)  | COUNT(tl.taskqueueid) |
+--------------------+-----------------------+
|         3          |           2           |
+--------------------+-----------------------+

有没有人能教我该怎么做。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-07 19:14:00

对于这些类型的计数,有一个非常好的技巧:

代码语言:javascript
复制
SELECT
    SUM(jq.batchid > 0) as nb_batchid_positive,
    SUM(tl.taskqueueid IS NOT NULL) as nb_taskqueueid_not_null
FROM jobqueue jq
LEFT JOIN taskslogs tl
    ON jq.taskqueueid=tl.taskqueueid
    AND jq.documentgroupid=0
    AND tl.statusDefinitionID=1
WHERE jq.jobid=140;

SUM(布尔条件)给出了与条件完全匹配的行数。

票数 2
EN

Stack Overflow用户

发布于 2012-06-07 19:12:00

如果执行左连接,count将始终为两个元素返回相同的行数,因为它们只能返回相同的行数。

您将需要进行两次计数,对于您正在查看的条件,每个表一次。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10930462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档