mysql 计算列可以写函数吗_MYSQL函数,基于db列中的数据进行计算

我有一张表格,根据地点(P)和赛车手数量(R)查找得分点数

以及由points_id指示的评分格式。表中显示了两种情况。

有时候这些点直接由P和N的值确定,如points_id = 3

其他时候,他们最容易通过pts_calc列中显示的简单计算来确定。

|points_id| P | N |points|pts_calc|

| 1 | 0 | 0 | NULL | pin |

| 1 |DNS| 0 | NULL | nin+1 |

| 3 | 1 | 0 |102.00| NULL |

| 3 | 2 | 0 | 98.00| NULL |

| 3 | 3 | 0 | 96.00| NULL |

| 3 | 4 | 0 | 93.00| NULL |

| 3 | 5 | 0 | 91.00| NULL |

| 3 | 6 | 0 | 89.00| NULL |

| 3 |DNF| 0 | 85.00| NULL |我希望能够创建一个返回三个输入变量中的点的函数。

points_id,P,N

以下是我的尝试。

CREATE FUNCTION POINTS(pid INT,pin VARCHAR(3),nin INT)

RETURNS DEC(6,2)

DETERMINISTIC

BEGIN

DECLARE pts DECIMAL(6,2);

DECLARE pcalc VARCHAR(20);

SELECT points,pts_calc INTO pts,pcalc FROM scoring_points WHERE points_id=pid AND (P=pin OR P='0') AND (N=nin or N=0);

IF(pts IS NULL) THEN

SET @s= CONCAT('SET pts = ',pcalc);

PREPARE stmt FROM @s;

EXECUTE stmt;

END IF;

RETURN pts;

END但是我得到了这个错误。

1336 - 存储函数或触发器中不允许动态SQL h1>

进一步的研究表明Prepare语句不仅仅在函数中被允许,而是在程序中。

我希望能做一些事情;

SELECT SUM(Points(pid,place,numb)) FROM t1 GROUP BY racer.id但是在计划B(待定),除非有人有好主意。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值