我必须为我的视图生成行号,该行号将在组后重置。以下SQL语句对我有用。
SELECT st_id, class, percentage,
(CASE section
WHEN @cur_sect
THEN @curRow := @curRow + 1
ELSE @curRow := 0 END) + 1 AS position,
@cur_sect := section AS Section
FROM SUM_MARKS,
(SELECT @curRow := 0, @cur_sect := '') counter
ORDER BY class, section;
当尝试使用phpmyadmin保存它时,警告显示它包含变量。因此需要编写一个可以与其他列一起使用的函数或过程。类似于sql-server中的 row_number()内置函数。
答案 0 :(得分:0)
我尝试在mysql 8.0.16中执行以下语句,它显示了预期的结果。 将视图View1创建为SELECT st_id,类,百分比,部分, row_number()OVER(PARTITION BY类,部分ORDER BY百分比DESC)AS位置 FROM table1 ORDER BY的类,节,位置; 对于那些使用mysql 5.7或更低版本的人,解决方案是使用带有变量的语句,将其保存在前端的查询生成器中,例如MS Access或Libreoffice Base(直接sql模式),然后用于创建表单或报表。如果您需要此“视图”以显示在Web设计中的表中,则可以使用PHP或同等功能,然后在其中编写此sql语句(带有变量)。