如果我可以在查询中递增变量以附加排名列:
SET @i = 0;
SELECT *, @i:=@i+1 AS rank FROM table WHERE column="value" ORDER BY time;
如何将此作为所有唯一column
值的子查询执行?我认为真正的问题是重置变量。
答案 0 :(得分:1)
如果您想为每列增加一个数字(在大多数其他数据库中以row_number()
的方式),您仍然可以使用变量:
SELECT t.*,
(@i := if(@c = column, @i + 1,
if(@c := column, 1, 1)
)
) as rank
FROM table t CROSS JOIN
(SELECT @i := 0, @c := '') params
ORDER BY column, time;