SQL在没有JOIN的情况下从多个表中选择总和

时间:2012-01-26 22:08:53

标签: sql

我有几个具有相同结构的表。如何在没有JOIN的情况下从这些表中选择SUM(字段)(只是简单地将表联合起来)?

例如,如果我跑:

SELECT SUM(views) FROM tb1, tb2 WHERE 1

它告诉我“字段列表中的列'视图'含糊不清”。

有没有办法使用UNION

3 个答案:

答案 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