创建函数,用于基于分组依据创建序列号生成视图

时间:2019-06-23 17:46:31

标签: mysql phpmyadmin

我必须为我的视图生成行号,该行号将在组后重置。以下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()内置函数。

1 个答案:

答案 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语句(带有变量)。