mysql:得到最佳答案

时间:2012-07-25 01:36:33

标签: mysql

我有一个名为 答案 的表格,有两行:

提问 - 回答

因为您可能会猜测 questionid 存储问题ID编号而答案存储答案,答案只是数字1到8

我想显示最佳答案。

例如

questionid - 回答

4 - 7
4 - 3
4 - 3
2 - 3
6 - 7
7 - 1
9 - 8
1 - 5

回答= 3

我试过了:

SELECT answer FROM answers WHERE questionid='$qid' ORDER BY answer DESC LIMIT 1

SELECT DISTINCT answer FROM answers WHERE questionid='$qid' ORDER BY answer DESC LIMIT 1

$ qid = page id ie:/question.php?qid = 4

但两者都不正确。

更新

是否在不使用以下情况下显示结果:

while($row = mysql_fetch_array($result)) {
// stuff here
}

因为我只想根据$ qid

显示1个结果(即最佳答案)

2 个答案:

答案 0 :(得分:2)

有多种方法可以执行此操作(HAVING()WHEREMAX()等)。通用性为GROUP BY

SELECT answer, COUNT(answer) FROM questions GROUP BY answer ORDER BY COUNT(answer) DESC LIMIT 1

这将返回:

3 - 3

了解更多about GROUP BY

更新

在我发布此答案后,您似乎修改了您的问题。

如果要将查询限制为特定问题,请添加WHERE子句作为其他问题。

... FROM questions WHERE questionid = X GROUP BY ...

注意:请注意SQL Injection

如果您只有1条记录,则可以放弃while循环,只需访问最高结果。

$result = mysql_query($sql);
$row = mysql_fetch_array($result);

注意:您希望进行更多错误检查(例如确保返回结果)。另外,请勿使用mysql_*函数now deprecated。请改用MySQLiPDO

答案 1 :(得分:1)

SELECT count(*) AS answer_count, answer FROM answers WHERE questionid='$qid' GROUP BY answer ORDER BY answer_count DESC LIMIT 1