这里记录一下自己踩过两次的坑:
第一段sql得到的结果是被减数,第二段sql得到的结果是减数,我的想法是两段sql直接减,形如这样:
SELECT
count(a.id) AS total1
FROM
A a
WHERE
a.enabled = 1
AND a.created_date >= '2018-11-01'
-
SELECT
'label' AS label,
count(b.id) AS total
FROM
B b
WHERE
b.enabled = 1
AND b.created_date >= '2018-11-01'
思维上有点想当然:用第一段得到的结果减去第二段得到的结果,这样是执行不了的。
正确的做法应该是将两个sql作为子查询,放在一个sql中,形如下面的形式:
SELECT
t1.total - t2.total
FROM
(
SELECT
'label' AS label,
count(a.id) AS total
FROM
A a
WHERE
a.enabled = 1
AND a.created_date >= '2018-11-01'
) t1,
(
SELECT
'label' AS label,
count(b.id) AS total
FROM
B b
WHERE
b.enabled = 1
AND b.created_date >= '2018-11-01'
) t2
WHERE
t1.label = t2.label
如果不使用存储过程的话,单sql中的加减乘除操作应该在同一个select语句中。