MySQL:使用Count来限制结果?

时间:2011-12-25 00:08:06

标签: mysql

嗨:我需要一种方法来限制使用SUM或COUNT的查询结果,就像使用limit一样。这可能吗?我有一张问答表。如果问题,每个条目标识为“0”,如果响应,则标识为“1”。每个答案都有questionID,所以我可以通过这个字段来订购。我想用他的所有答案显示前20个问题而不使用限制,因为使用LIMIT 0,20将显示前20个条目,无论它们是问题还是答案。

我希望看到这样的逻辑:

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

我怎么能做到这一点?任何建议都表示赞赏。

2 个答案:

答案 0 :(得分:2)

由于您正在执行GROUP函数(求和),请尝试使用HAVING而不是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;

答案 1 :(得分:1)

这听起来像一个设计糟糕的架构。将您的问题放在一个表格中,将答案放在另一个表格中,将问题ID作为答案表上的外键。把它们放在同一张桌子里就是你现在遇到这个问题的原因!