2011-12-25 110 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