【问题标题】:Create function to use in creating view for serial number generation base on group by创建用于根据分组创建序列号生成视图的函数
【发布时间】:2019-11-05 15:51:34
【问题描述】:

我必须为我的视图生成行号,这些行号将在分组后重置。以下 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 保存它时,会出现警告,它包含变量。因此需要编写一个可以与其他列一起使用的函数或过程。像 row_number() sql-server 中的内置函数。

【问题讨论】:

  • 您不能从函数返回结果集,也许您应该查看触发器。而 mysql 确实有 row_number(版本 8 或更高版本)。

标签: mysql phpmyadmin


【解决方案1】:

我在 mysql 8.0.16 中尝试了以下语句,它显示了预期的结果。 创建视图 View1 作为 SELECT st_id, class, percent, section, row_number() OVER (PARTITION BY class, section ORDER BY percent DESC) AS 位置 FROM table1 ORDER BY 类、节、位置; mysql 5.7 或更低版本的解决方案是使用带变量的语句,将其保存在前端的查询构建器中,如 MS Access 或 Libreoffice Base(直接 sql 模式),然后用于创建表单或报告。如果您需要在网页设计中的表格中显示此“视图”,您可以使用 PHP 或等效的并在此处编写此 sql 语句(带变量)。

【讨论】:

    猜你喜欢
    • 2022-01-08
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 2019-04-17
    • 1970-01-01
    • 2020-10-24
    相关资源
    最近更新 更多