编辑(基于评论): 我们可以使用用户定义的变量将行号分配给各种 value 在…的分区内 user_id . 最后,我们将过滤掉这个结果集,每个结果集最多考虑3行 user_id 只是。
SELECT
dt2.user_id,
dt2.value
FROM
(
SELECT
@rn := CASE WHEN @ui = dt.user_id THEN @rn + 1
ELSE 1
END AS row_no,
@ui = dt.user_id,
dt.value
FROM
(
SELECT DISTINCT
user_id,
value
FROM your_table
ORDER BY user_id
) AS dt
CROSS JOIN (SELECT @rn := 0, @ui := null) AS user_init_vars
) AS dt2
WHERE dt2.row_no <= 3
1条答案
按热度按时间2vuwiymt1#
编辑(基于评论):
我们可以使用用户定义的变量将行号分配给各种
value
在…的分区内user_id
. 最后,我们将过滤掉这个结果集,每个结果集最多考虑3行user_id
只是。上一个问题的答案:
Group_Concat(Distinct...)
所有这些都是独一无二的value
为了一个user_id
.然后我们可以使用
Substring_Index()
函数将字符串设为第三个逗号。这将导致最多只考虑3个值。最后,我们可以使用
Concat()
函数将结果字符串括在方括号中。Values
是mysql中的保留关键字。您可以考虑将结果列命名为其他列。请尝试以下操作: