gpt4 book ai didi

带for循环的mysql标量函数

转载 作者:行者123 更新时间:2023-11-29 14:06:58 24 4
gpt4 key购买 nike

我有表“points_level”:

id | description | level
--------------------------
1 | noob | 0
2 | rookie | 50
3 | The boss | 100

我需要构建一个函数,以整数形式返回关卡 ID,例如:

select calc_level(12)
result: 1

select calc_level(90)
result: 2

select calc_level(300)
result: 3

select calc_level(100)
result: 3

select calc_level(-50)
result: 1

我需要在points_level表中添加一些级别(在不久的将来),所以我不应该通过一些简单的“CASE WHEN”来计算结果,我考虑了for循环中的“CASE WHEN”,我发现了一些SSQL 的示例,但 MYSQL 没有任何示例,我不知道创建此类函数的 MYSQL 语法:(

有人可以帮助我吗?

谢谢

最佳答案

该算法相对简单 - 您需要提供的点大于或等于级别的 id:

SELECT id
FROM points_level
WHERE
(<points_input> >= level)
-- For negative input, return the lowest level
OR (<points_input> < 0 AND level <= 0)
ORDER BY level DESC LIMIT 1

http://sqlfiddle.com/#!2/07601/4

查看MySQL CREATE FUNCTION syntax将其包装在函数中的正确方法(如果您觉得确实需要)。

CREATE FUNCTION calc_level (in_points INT)
RETURNS INT
BEGIN
DECLARE id_out INT;
SET id_out = (
SELECT id
FROM points_level
WHERE
in_points >= level
OR (in_points < 0 AND level <= 0)
ORDER BY level DESC LIMIT 1
);
RETURN id_out;
END

关于带for循环的mysql标量函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14197552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com