如何获取行计数UNION,SUM MySql

时间:2013-11-13 17:25:36

标签: mysql

我有这个查询,我想得到行计数,但我也得到MySql错误:ERROR 1248(42000):每个派生表必须有自己的别名

SELECT SUM(total) FROM
                (
                    SELECT COUNT(1) AS total FROM toys tiw 
                    LEFT JOIN item ti 
                    ON tiw.item_id = ti.id 
                    WHERE tiw.user_id='1785335'
                )
                UNION

                (

                    SELECT COUNT(1) as total 
                    FROM gadgets tfiw 
                    LEFT JOIN flair_store tfs 
                    ON tfiw.flair_id = tfs.id 
                    WHERE tfiw.user_id='1785335'
                ) t1

1 个答案:

答案 0 :(得分:3)

如果您希望得到两个总数的sum(),我相信您想要使用:

SELECT SUM(total) 
FROM
(
    SELECT COUNT(1) AS total 
    FROM toys tiw 
    LEFT JOIN item ti 
        ON tiw.item_id = ti.id 
    WHERE tiw.user_id='1785335'
    UNION ALL
    SELECT COUNT(1) as total 
    FROM gadgets tfiw 
    LEFT JOIN flair_store tfs 
        ON tfiw.flair_id = tfs.id 
    WHERE tfiw.user_id='1785335'
) d

注意我也会使用UNION ALL。即使两个查询中的总计数相同,UNION ALL也会返回两个值。 UNION将删除重复项。

就您的错误而言,您在其中一个子查询中缺少别名。