gpt4 book ai didi

sql - 如何编写这个具有挑战性的 SQL (MySQL) 命令?

转载 作者:行者123 更新时间:2023-11-30 21:22:52 24 4
gpt4 key购买 nike

这是场景:我正在开发一个类似于 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com