如何从两个表中获取特定用户的总和?

时间:2013-12-09 01:27:01

标签: mysql sql mysqli

我目前有两张桌子:

喜爱: 用户身份 drinkName

史: 用户身份 drinkName

我想得到每个表中特定用户ID显示的总时间总和,然后是两个表中userID显示的总次数。

(SELECT COUNT(userID) AS totalDrinks FROM History
WHERE userID = 'sai') union 
(SELECT COUNT(userID) AS totalDrinks FROM Favorite
WHERE userID = 'sai')

这样代码就会得到以下输出:

totalDrinks

4

2

但是我正在尝试使用MySQL sum函数,而不是添加两个东西。 所以我想知道如何将我的查询重写为输出6?

2 个答案:

答案 0 :(得分:1)

SELECT SUM(userID)as totalDrinks   FROM History h 
JOIN Favorite f ON h.userID=f.userID 
GROUP BY userID
WHERE userID = 'sai'

答案 1 :(得分:0)

您的UNION方法几乎就在那里。您必须SUM两个查询的结果:

SELECT SUM(totalDrings) totalDrings FROM (
    SELECT COUNT(*) totalDrinks FROM History
    WHERE userID = 'sai'
    UNION ALL
    SELECT COUNT(*) FROM Favorite
    WHERE userID = 'sai'
) s

有几点需要注意。您应该使用UNION ALL,否则如果COUNT s的结果相同,那么它们只会被添加一次。另一件事是你不应该在这里使用INNER JOIN,因为这将迫使用户出现在两个表中。