2014-01-16 33 views
0

SqlFiddle只有讓用戶與特定的連接表計數

看起來很簡單,但對我的生活中,我似乎無法得到我想要的結果。請記住,這發生在擁有超過600萬條記錄的服務器上,因此它必須高效。

我想誰被連接到項目表中有3計數或地位較高的1只沒有誰擁有1狀態上的項目2倍的用戶的用戶必須是> = 3

SELECT 
    user.id, 
    user.name, 
    item.id as item_id, 
    itemstatus.item_status, 
    COUNT(item.status) as status 
FROM user 
JOIN item ON (user.id = item.user_id) 
JOIN itemstatus ON (item.status = itemstatus.id) 
WHERE item.status = 1 
GROUP BY user.id 

我上面的當前查詢得到所有與計數。我怎樣才能得到那些有3或以上的數字。提前致謝。我希望我明確這一點。

+2

'HAVING' ............ – zerkms

回答

1

如果我理解正確的話,你只需要使用COUNT(item.status)記錄大於或等於3,在這種情況下,你需要使用HAVING子句的GROUP BY子句之後。 HAVING子句有點像聚合值的WHERE子句。

SELECT 
    user.id, 
    user.name, 
    item.id as item_id, 
    itemstatus.item_status, 
    COUNT(item.status) as status 
FROM user 
JOIN item ON (user.id = item.user_id) 
JOIN itemstatus ON (item.status = itemstatus.id) 
WHERE item.status = 1 
GROUP BY user.id 
HAVING COUNT(item.status) >= 3 
+0

是的,這正是它哇我需要學習更多的SQL的原因,哈靈是偉大的!我不知道那是存在的。 – John

相關問題