2010-11-18 54 views
1

我试图做一个查询,选择所有users其中SUM其交易SUM大于25。 我有这个疑问:选择与SUM条件

SELECT users.uid, SUM(transactions.credits_earned) AS total 
FROM users, transactions 
WHERE users.uid = transactions.uid AND ???? 
GROUP BY users.uid 

我试图用别名totalSUM本身直接在条件,但显然没有工作(和有意义的原因)。你有什么想法如何保持查询简单吗?

谢谢 迪奥戈

回答

3
SELECT users.uid, SUM(transactions.credits_earned) AS total 
FROM users INNER JOIN transactions 
ON users.uid = transactions.uid 
GROUP BY users.uid 
HAVING SUM(transactions.credits_earned) > 25 
+0

谢谢!在这种情况下使用'INNER JOIN'有没有优势? – DiogoNeves 2010-11-20 04:38:21

+0

在这种情况下也是一样,但对于可读性更好。此外,它是更一致的,一旦你开始使用*左/右/ CROSS JOINs * – 2010-11-20 04:42:16

+0

旁观者是正确的。此外,一些较旧的SQL方言无法识别WHERE表单实际上是一个连接,因此WHERE查询可能非常缓慢。现在大多数现代SQL都很聪明。 – smirkingman 2010-11-20 13:31:50

1

退房HAVING子句

2

您可以尝试

SELECT users.uid, SUM(transactions.credits_earned) AS total 
FROM users, transactions 
WHERE users.uid = transactions.uid 
GROUP BY users.uid 
HAVING SUM(transactions.credits_earned) > 25