作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是场景:我正在开发一个类似于 stackoverflow.com 的网站。在提问者/搜索者发布他的问题后,其他用户可以发布他们对该问题的答案。用户可以对同一问题发布多个答案,但通常只会显示最新的答案。用户可以对答案发表评论,如果评论超出考虑范围,SQL语句是
mysql_query("SELECT * , COUNT( memberid ) AS num_revisions
FROM (
SELECT *
FROM answers
WHERE questionid ='$questionid'
ORDER BY create_moment DESC
) AS dyn_table JOIN users
USING ( memberid )
GROUP BY memberid order by answerid asc")or die(mysql_error());
当考虑到评论时,将有三个表格。我想选择一个求解器对一个特定问题给出的所有最新答案,一个求解器对这个问题给出了多少答案(num_revisions),求解器的名称,对这些最新答案的评论。这个SQL语句怎么写呢?我正在使用 MySQL。
希望您能理解我的问题。如果您不清楚我的问题,请要求澄清。
它比 stackoverflow.com 稍微复杂一点。在 stackoverflow.com 上,您只能对一个问题给出一个答案。但是在我的网站上,一个用户可以多次回答一个问题。但是只有最新的回答才会被认真对待。
评论表的列是commentid, answerid,comment, giver, comment_time。所以是提问--->回答---->评论。
最佳答案
您可以使用相关子查询,以便您只获得每个成员的最新答案。这是像您的示例一样工作的 T-SQL(仅回答给定问题)。而且你必须转换为 mysql 风格:
select *
from answers a
where questionid = '$questionid'
and answerid in (select top 1 answerid
from answers a2
where a2.questionid = a.questionid
and a2.memberid = a.memberid
order by create_moment desc)
order by create_moment
您还没有为您的评论表提供架构,所以我还不能包括它:)
-克里普
关于sql - 如何编写这个具有挑战性的 SQL (MySQL) 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1913963/
我是一名优秀的程序员,十分优秀!