我有一个名为 答案 的表格,有两行:
提问 - 回答
因为您可能会猜测 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个结果(即最佳答案)答案 0 :(得分:2)
有多种方法可以执行此操作(HAVING()
,WHERE
,MAX()
等)。通用性为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。请改用MySQLi或PDO。
答案 1 :(得分:1)
SELECT count(*) AS answer_count, answer FROM answers WHERE questionid='$qid' GROUP BY answer ORDER BY answer_count DESC LIMIT 1