2011-12-25 148 views
0

嗨:我需要一種方法來限制SUM或COUNT查詢的結果,就像使用限制一樣。這可能嗎?我有一張有問題和答案的表格。每個條目在問題時標識爲「0」,如果是響應則標識爲「1」。每個答案都有問題ID,所以我可以按此字段排序。我想在不使用限制的情況下顯示前20個問題,因爲使用LIMIT 0,20將顯示前20個條目,無論它們是問題還是答案。MySQL:使用Count來限制結果?

我希望看到一些像這樣的邏輯:

SELECT *, SUM(IF(level = '0', 1,0)) AS MyCount FROM table 
WHERE MyCount<20 ORDER BY questionID,timestamp 

我怎麼能做到這一點?任何建議表示讚賞。

+0

你可以發佈你的模式嗎? – 2011-12-26 21:05:56

回答

2

既然你做一個GROUP功能(總和),請嘗試使用WHERE具有代替:

SELECT *, SUM(IF(level = '0 ', 1,0)) AS MyCount 
FROM table 
HAVING MyCount < 20 
ORDER BY 
     questionID,timestamp 

- 編輯 -

因爲你存儲了兩種不同類型的數據(響應和問題),你可以嘗試一個自我加入(未經測試):

SELECT 
    question.id AS question_id, 
    question.name AS question_name, 
    response.id AS response_id, 
    response.name AS response_name   
FROM 
    table AS question 
JOIN 
    table as response 
ON 
    question.id AND response.level = 1 
WHERE 
    question.level = 0; 
+0

我試過這個建議,但沒有結果:( – BitGenix 2011-12-25 00:18:31

+0

感謝此示例,但這對我不起作用 – BitGenix 2011-12-26 16:27:54

1

這聽起來像一個設計得很差的模式。在一張表中填寫您的問題,在另一張表中填寫您的答案,並在答案表上將問題ID設爲外鍵。將它們兩個夾在一起就是爲什麼你現在有這個問題!

+0

你說得對,但我這樣做的原因是因爲我想要得到結果一次通過。 – BitGenix 2011-12-25 00:20:42