取决于你真正想要什么......一行多列,或多行有各自的计数。您的原始查询不正确,因为 UNION 语句应该是它的 OWN 查询,以与第一个查询相同的记录格式返回其自己的结果集(即:相同的数字、列名和数据类型。不只使用计数进行采样,采用以下示例语法。
select
a.NumberField1,
a.CharField1,
a.DateField1
from
SomeTable a
where
a.SomeCondition = 1
UNION
b.SomeField AS NumberField1,
b.AnotherField AS CharField1,
c.SomeDate AS DateField1
from
AnotherTable b
where
b.TestCondition = 6
以上将返回“SomeTable”中的所有行及其条件,并根据其条件包含“AnotherTable”中的行。如果有任何重复项,则将删除重复项……除非您执行了“UNION ALL”。但请注意,联合本身就是一个选择语句。
现在,回到你的。不确定是否/为什么由于被包裹在(parens)中而失败,但会被尝试为
Select
Sum(asd) as 'totalRows'
FROM
( Select Count(*) as 'asd'
from Machines
UNION ALL
Select Count(*) as 'asd'
from Factures
UNION ALL
Select Count(*) as 'asd'
From Consommation ) as 'tab1'
我会更改为 union all,因为...说您的 Machines 计数和 Factures 计数均为 175... 只有一个原始条目会被退回,而您会为知道计数不正确而挠头。 .. 如果巧合的是,所有 3 个来源的计数相同,均为 175,请重试...您只会返回单个 175 记录,并且比预期的还要远。