如何将几个子查询的结果加在一起?

man*_*del 8 mysql sql

我正在运行MySQL查询,根据他们贡献的书评和食谱评论的数量对我的网站用户进行排名.在使用多个JOIN查询的初始问题之后,我已切换到一系列子查询,这要快得多.但是,虽然我可以从每个成员中提取评论数量,但我无法弄清楚如何将它们添加到一起,因此我可以按总数进行排序.

这是当前的查询:

SELECT users.*,
   (SELECT count(*) FROM bookshelf WHERE bookshelf.user_id = users.ID) as titles,
   (SELECT count(*) FROM book_reviews WHERE book_reviews.user_id = users.ID) as bookreviews,
   (SELECT count(*) FROM recipe_reviews WHERE recipe_reviews.user_id = users.ID) as recipereviews
FROM users   
Run Code Online (Sandbox Code Playgroud)

我需要将bookreviews和recipereviews加在一起以获得'reviewtotals'.MySQL不会允许你使用简单的语法来对别名进行计算,但我认为还有另一种方法可以做到这一点?

Qua*_*noi 11

将其包装到子查询中:

SELECT  *,
        bookreviews + recipereviews AS totalreviews
FROM    (
        SELECT  users.*,
                (SELECT count(*) FROM bookshelf WHERE bookshelf.user_id = users.ID) as titles,
                (SELECT count(*) FROM book_reviews WHERE book_reviews.user_id = users.ID) as bookreviews,
                (SELECT count(*) FROM recipe_reviews WHERE recipe_reviews.user_id = users.ID) as recipereviews
        FROM    users   
        ) q
Run Code Online (Sandbox Code Playgroud)