mysql查询两张表的同一列_如何组合mysql查询中的多个表,并根据一列的合计进行排名...

匿名用户

我猜每个表中的每个列都是唯一的,也就是说每个表都没有重复的值。你的小提琴就是这样。

而且,我猜没有用户会在特定的事件中重复尝试回答特定的问题。

下面是一个纯SQL查询来获取您想要的内容。(https://www.db-fiddle.com/f/krksyag954msn7bebtgupg/2)SELECT question_attempts.event_id,

users.id user_id, users.first_name, users.last_name,

SUM(questions.points) points

FROM question_attempts

JOIN questions ON question_attempts.question_id = questions.id

JOIN answers ON question_attempts.answer_id = answers.id

JOIN users ON question_attempts.user_id = users.id

WHERE answers.is_correct = 1

GROUP BY question_attempts.event_id,

users.id, users.first_name, users.last_name

为什么这管用?您的表将所有其他表联系在一起。拉入每次回答尝试的问题。我们需要它,因为它说明问题值得多少。/li>

拉入每次尝试的答案。我们需要它,因为我们需要知道特定答案获取用户名。/li>

然后,SUM/GROUP BY将每个事件和用户的正确答案的点数相加。

此查询获取所有事件和用户。您可以添加WHERE ... AND question_attempts.event_id = 6

或者其他诸如此类的事情来得到一个事件的结果。

您可以使用ORDER BY question_attempts.event_id,

SUM(questions.points) DESC,

users.id

以每个事件的分数降序(最高的第一)获得输出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值