涉案系统相关----工作随笔

一、This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its 错误解决办法

问题分析

我们创建函数时必须指定我们的函数是否是

  • DETERMINISTIC 不确定的
  • NO SQL 没有 SQL 语句,当然也不会修改数据
  • READS SQL DATA 只是读取数据,当然也不会修改数据
  • MODIFIES SQL DATA 要修改数据
  • CONTAINS SQL 包含了 SQL 语句

解决方法

在 MySQL 中创建函数时出现这种错误的解决方法:

1、在 MySQL 数据库中执行以下语句,临时生效,重启后失效

set global log_bin_trust_function_creators=TRUE;

2、在配置文件 my.ini 的 [mysqld] 配置,永久生效

log_bin_trust_function_creators=1
二、分组获取具体数据

1、简单的说row_number()从1开始,为每一条分组记录返回一个数字,这里的ROW_NUMBER() OVER (ORDER BY xlh DESC) 是先把xlh列降序,再为降序以后的没条xlh记录返回一个序号。 

2、row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)

举例:SELECT

t1.org_id,t1.start_date,t1.end_date,t1.stati_year_month
FROM
( SELECT ROW_NUMBER() over ( PARTITION BY org_id ORDER BY id DESC ) RowNum, s.start_date,s.end_date,s.org_id,s.stati_year_month FROM stati_vehicle_cost_month_maint s) AS t1
WHERE
RowNum = 1

获取org_id中记录最大的一条记录

posted @ 2022-11-02 09:22  flyComeOn  阅读(23)  评论(0)    收藏  举报