MySQL两个COUNT语句之和

MySQL两个COUNT语句之和,mysql,count,sum,Mysql,Count,Sum,我知道这是一个愚蠢的解决方案,但是,对不起,我有点困惑 我有两个SELECT COUNT语句。例如: 报表1 总数=3 _ 报表2 totalcout=1 我想将两个总数相加,得到totalcount=4。有办法吗 注:“软件一号”和“软件二号”列中的软件类型相同(值相同) 感谢大家。一种方法是写: SELECT SUM(CASE WHEN softwareone LIKE '%typeone%' AND softwaretwo LIKE '%typeone%'

我知道这是一个愚蠢的解决方案,但是,对不起,我有点困惑

我有两个SELECT COUNT语句。例如:

报表1

总数=3 _

报表2

totalcout=1

我想将两个总数相加,得到totalcount=4。有办法吗

注:“软件一号”和“软件二号”列中的软件类型相同(值相同)

感谢大家。

一种方法是写:

SELECT SUM(CASE WHEN softwareone LIKE '%typeone%'
                 AND softwaretwo LIKE '%typeone%'
                THEN 2
                ELSE 1
            END
          ) AS "totalcount"
  FROM my_table
 WHERE softwareone LIKE '%typeone%'
    OR softwaretwo LIKE '%typeone%'
;
案例。。。END
表达式在两个条件都满足时将计算为
2
(因此,如果
softwareone
softwaretwo
都是
类似“%typeone%”
,则行计数两次),并且在只有一个条件满足时计算为
1
。因此,
SUM(CASE…END)
给出满足一个条件的总行数,加上满足另一个条件的总行数。

您可以使用

Select l1.totalcount + l2.totalcount FROM 
(SELECT COUNT(softwareone) AS totalcount 
FROM my_table WHERE softwareone LIKE '%typeone%') as l1,
(SELECT COUNT(softwaretwo) AS totalcount 
FROM my_table WHERE softwaretwo LIKE '%typeone%') as l2

这两个选项都是故意在
%typeone%
上选择filter的吗?+1子查询解决方案会导致MySQL多次扫描记录。此查询只会导致MySQL扫描一次。
SELECT SUM(CASE WHEN softwareone LIKE '%typeone%'
                 AND softwaretwo LIKE '%typeone%'
                THEN 2
                ELSE 1
            END
          ) AS "totalcount"
  FROM my_table
 WHERE softwareone LIKE '%typeone%'
    OR softwaretwo LIKE '%typeone%'
;
Select l1.totalcount + l2.totalcount FROM 
(SELECT COUNT(softwareone) AS totalcount 
FROM my_table WHERE softwareone LIKE '%typeone%') as l1,
(SELECT COUNT(softwaretwo) AS totalcount 
FROM my_table WHERE softwaretwo LIKE '%typeone%') as l2