SELECT COUNT(id)
FROM table1
UNION
SELECT COUNT(id)
FROM table2
UNION
SELECT COUNT(id)
FROM table3
结果是
247811
58599
76
但实际上
table1有 247811 行
table2有 76 行
table3有 58599 行
答案 0 :(得分:2)
union
运营商对订单不做任何保证。如果要以特定方式对结果进行排序,则必须使用order by
子句明确地执行此操作。另请注意,union
会删除重复项,因此您最好使用union all
。 E.g:
SELECT cnt
FROM (SELECT 't1', COUNT(id) FROM table1
UNION ALL
SELECT 't2', COUNT(id) FROM table2
UNION ALL
SELECT 't3', COUNT(id) FROM table3) t
ORDER BY 1 ASC
答案 1 :(得分:1)
如果您的问题取决于order by
,请order by
选择union
,如果您有计数问题?(在您的示例中有不同的计数79和76)取决于您使用的count(id)
count(*)
不相同,count(id)
会忽略null
列中的每个Id
,count(*)
它是你的表行