gpt4 book ai didi

不分组的MySQL计数

转载 作者:行者123 更新时间:2023-11-29 00:12:09 25 4
gpt4 key购买 nike

我正在运行以下查询以了解让用户第一次尝试回答他们第二次尝试旁边列出的问题。

SELECT 
s.id AS attempt_id_first, m.id AS attempt_id_second, s.user_id
FROM
attempt s
INNER JOIN attempt m on s.user_id = m.user_id
WHERE
s.id<m.id

我最终得到了这个:

attempt_first   attempt_second  user_id
7 17 1
9 10 2
9 15 2
10 15 2
4 6 9
24 25 15
29 34 19
29 36 19
34 36 19

我想要一个新列来计算用户的尝试次数,以便:

7   17  1  1
9 10 2 3
9 15 2 3
10 15 2 3
4 6 9 1
24 25 15 1
29 34 19 3
29 36 19 3
34 36 19 3

我确信这是微不足道的,但我无法让它发挥作用。帮助任何人?

最佳答案

我想是这样的:只显示结果,并放入一个额外的计数子查询:

select
userid,
id,
(select
count('x')
from
attempt x
where
x.userid = a.userid) as attempcount
from
attempt a

如果您想将第一次和第二次尝试保留在不同的列中,您当然可以将子选择嵌入到您的原始查询中。

不过,这似乎是错误的。首先,你需要至少尝试两次,否则不会显示。您可以通过将 inner join 更改为 left join 并将 where 子句中的条件移动到该连接来解决该问题。其次,“第二次尝试”并不是说的第二次尝试。实际上,对于每次尝试,您都会获得所有下一次尝试。查看用户 2 的示例。您不小心得到了三行(其中有 3 次尝试),但是您得到了尝试 9 和 10,以及尝试 9 和 15 以及 10 和 15。9、15 是不正确的,因为15 不是 9 之后的尝试。用户尝试的次数越多,您得到的错误结果就越多。

关于不分组的MySQL计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24540802/

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