我有这个查询,我想得到行计数,但我也得到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
答案 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
将删除重复项。
就您的错误而言,您在其中一个子查询中缺少别名。