2010-11-18 51 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