我有几个具有相同结构的表。如何在没有JOIN的情况下从这些表中选择SUM(字段)(只是简单地将表联合起来)?
例如,如果我跑:
SELECT SUM(views) FROM tb1, tb2 WHERE 1
它告诉我“字段列表中的列'视图'含糊不清”。
有没有办法使用UNION
?
答案 0 :(得分:3)
我认为这应该让你:
SELECT SUM(views)
FROM (
SELECT views FROM table1
UNION ALL
SELECT views FROM table2
) A
您收到错误的原因是因为您正在创建Cartesian product(一个表中的所有行都与另一个表中的所有行匹配),并且因为两个表都有{{1} }列,它不知道你正在采取什么。但是,笛卡尔联盟(可能)不会给你你想要的金额。
答案 1 :(得分:0)
如果结构相同:
SELECT SUM(views)
FROM (tb1 UNION tb2)
WHERE 1
如果这不起作用,请尝试(我没有方便的mysql来测试它):
SELECT SUM(views)
FROM (
(SELECT views FROM tb1)
UNION
(SELECT views FROM tb2)
)
WHERE 1
答案 2 :(得分:0)
SELECT SUM(views) FROM
(
SELECT views FROM tb1
UNION ALL
SELECT views FROM tb2
) t